Request for reviews (L): 7063628: Use cbcond on T4

Vladimir Kozlov vladimir.kozlov at
Wed Jul 13 20:44:37 PDT 2011

Fixed 7063628: Use cbcond on T4

Added new MacroAssembler instructions cmp_and_br() and old branch instructions 
are modified to use cbcond on T4 if distance is small (2K bytes). Most of the 
rest changes are usage of these new branch instructions in Interpreter and C1.

The prototype was done by Tom and I took some of his additional fixes. The 
formssel.cpp change is a bug fix where the MatchNode equality test wasn't 
recursing so it would mistakenly return true for complex matches. Added a fake 
label for branches generated in temp buffer by MachNode::emit_size(), added 
assert into .ad files to check label.

There was problem in is_in_wdisp16_range() (and in initial implementation of 
use_cbc()) which calls target(L) before emitting branch. Non-bound (forward 
branch) labels record current pc() as a branch address and later try to patch 
instruction (which could be 'cmp') at that address.

Removed unused code in check_klass_subtype_fast_path().

Modified vm_version string: has_ prefix is removed and only v8 or v9 will be 
printed as well only niagara_plus or niagara.

Tested on T4 with CTW, nsk, VM and java invoke regression tests.

More information about the hotspot-compiler-dev mailing list