jdk8/jdk8/hotspot: 46f6f063b272 (original) (raw)

--- a/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -51,6 +51,16 @@ void RangeCheckStub::emit_code(LIR_Assembler* ce) { __ bind(_entry);

--- a/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -3361,6 +3361,45 @@ __ mov(G2_thread, result_reg->as_register()); } +#ifdef ASSERT +// emit run-time assertion +void LIR_Assembler::emit_assert(LIR_OpAssert* op) {

--- a/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -324,7 +324,7 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) { assert(x->is_pinned(),"");

} if (needs_store_check) { value.load_item();

--- a/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -987,6 +987,25 @@ break; #endif // INCLUDE_ALL_GCS

+

+

+

+ default: { __ set_info("unimplemented entry", dont_gc_arguments); __ save_frame(0);

--- a/src/cpu/x86/vm/c1_CodeStubs_x86.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/cpu/x86/vm/c1_CodeStubs_x86.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -101,6 +101,15 @@ void RangeCheckStub::emit_code(LIR_Assembler* ce) { __ bind(_entry);

--- a/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -3755,6 +3755,44 @@ } } +#ifdef ASSERT +// emit run-time assertion +void LIR_Assembler::emit_assert(LIR_OpAssert* op) {

--- a/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -263,7 +263,7 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) { assert(x->is_pinned(),"");

+ } if (needs_store_check) { value.load_item();

--- a/src/cpu/x86/vm/c1_LinearScan_x86.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/cpu/x86/vm/c1_LinearScan_x86.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -675,7 +675,8 @@ switch (op2->code()) { case lir_cmp: case lir_cmp_fd2i:

--- a/src/cpu/x86/vm/c1_Runtime1_x86.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/cpu/x86/vm/c1_Runtime1_x86.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -1807,6 +1807,24 @@ break; #endif // INCLUDE_ALL_GCS

+

+

+

+ default: { StubFrame f(sasm, "unimplemented entry", dont_gc_arguments); __ movptr(rax, (int)id);

--- a/src/share/vm/c1/c1_Canonicalizer.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_Canonicalizer.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -937,4 +937,6 @@ void Canonicalizer::do_ProfileCall(ProfileCall* x) {} void Canonicalizer::do_ProfileInvoke(ProfileInvoke* x) {} void Canonicalizer::do_RuntimeCall(RuntimeCall* x) {} +void Canonicalizer::do_RangeCheckPredicate(RangeCheckPredicate* x) {} +void Canonicalizer::do_Assert(Assert* x) {} void Canonicalizer::do_MemBar(MemBar* x) {}

--- a/src/share/vm/c1/c1_Canonicalizer.hpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_Canonicalizer.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -107,6 +107,8 @@ virtual void do_ProfileInvoke (ProfileInvoke* x); virtual void do_RuntimeCall (RuntimeCall* x); virtual void do_MemBar (MemBar* x);

#endif // SHARE_VM_C1_C1_CANONICALIZER_HPP

--- a/src/share/vm/c1/c1_CodeStubs.hpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_CodeStubs.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -166,6 +166,22 @@ #endif // PRODUCT }; +// stub used when predicate fails and deoptimization is needed +class PredicateFailedStub: public CodeStub {

--- a/src/share/vm/c1/c1_Compilation.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_Compilation.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -33,13 +33,16 @@ #include "c1/c1_ValueStack.hpp" #include "code/debugInfoRec.hpp" #include "compiler/compileLog.hpp" +#include "c1/c1_RangeCheckElimination.hpp" typedef enum { _t_compile, _t_setup,

} _hir->verify(); @@ -180,13 +185,47 @@ _hir->compute_code(); if (UseGlobalValueNumbering) {

}

+

#ifndef PRODUCT , _last_instruction_printed(NULL) @@ -567,7 +607,9 @@ tty->print_cr(" Detailed C1 Timings"); tty->print_cr(" Setup time: %6.3f s (%4.1f%%)", timers[_t_setup].seconds(), (timers[_t_setup].seconds() / total) * 100.0); tty->print_cr(" Build IR: %6.3f s (%4.1f%%)", timers[_t_buildIR].seconds(), (timers[_t_buildIR].seconds() / total) * 100.0);

--- a/src/share/vm/c1/c1_Compilation.hpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_Compilation.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -26,8 +26,10 @@ #define SHARE_VM_C1_C1_COMPILATION_HPP #include "ci/ciEnv.hpp" +#include "ci/ciMethodData.hpp" #include "code/exceptionHandlerTable.hpp" #include "memory/resourceArea.hpp" +#include "runtime/deoptimization.hpp" class CompilationResourceObj; class XHandlers; @@ -85,6 +87,7 @@ LinearScan* _allocator; CodeOffsets _offsets; CodeBuffer _code;

--- a/src/share/vm/c1/c1_GraphBuilder.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_GraphBuilder.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -947,7 +947,9 @@ void GraphBuilder::load_indexed(BasicType type) {

@@ -1294,7 +1300,9 @@ BlockBegin* tsux = block_at(bci() + sw.dest_offset_at(0)); BlockBegin* fsux = block_at(bci() + sw.default_offset()); bool is_bb = tsux->bci() < bci() || fsux->bci() < bci();

#ifdef ASSERT if (res->as_Goto()) { @@ -1336,7 +1346,9 @@ BlockBegin* tsux = block_at(bci() + pair.offset()); BlockBegin* fsux = block_at(bci() + sw.default_offset()); bool is_bb = tsux->bci() < bci() || fsux->bci() < bci();

#ifdef ASSERT if (res->as_Goto()) {

--- a/src/share/vm/c1/c1_GraphBuilder.hpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_GraphBuilder.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -301,6 +301,8 @@ ValueStack* copy_state_exhandling(); ValueStack* copy_state_for_exception_with_bci(int bci); ValueStack* copy_state_for_exception();

--- a/src/share/vm/c1/c1_IR.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_IR.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -182,13 +182,14 @@ // Implementation of CodeEmitInfo // Stack must be NON-null -CodeEmitInfo::CodeEmitInfo(ValueStack* stack, XHandlers* exception_handlers) +CodeEmitInfo::CodeEmitInfo(ValueStack* stack, XHandlers* exception_handlers, bool deoptimize_on_exception) : _scope(stack->scope()) , _scope_debug_info(NULL) , _oop_map(NULL) , _stack(stack) , _exception_handlers(exception_handlers)

#endif } } +} + +void IR::eliminate_null_checks() {

#ifndef PRODUCT @@ -429,6 +435,7 @@ BlockList _loop_end_blocks; // list of all loop end blocks collected during count_edges BitMap2D _loop_map; // two-dimensional bit set: a bit is set if a block is contained in a loop BlockList _work_list; // temporary list (used in mark_loops and compute_order)

+

+

+ for (int block_id = _max_block_id - 1; block_id >= 0; block_id--) { clear_block_in_loop(i, block_id); } @@ -729,9 +747,20 @@ } else if (!(cur->is_set(BlockBegin::linear_scan_loop_header_flag) && parent->is_set(BlockBegin::linear_scan_loop_end_flag))) { TRACE_LINEAR_SCAN(4, tty->print_cr("DOM: computing dominator of B%d: common dominator of B%d and B%d is B%d", cur->block_id(), parent->block_id(), cur->dominator()->block_id(), common_dominator(cur->dominator(), parent)->block_id()));

@@ -918,8 +946,23 @@ BlockBegin* dominator = block->pred_at(0); int num_preds = block->number_of_preds();

+

+

+

+

+

assert(sux->linear_scan_number() >= 0 && sux->linear_scan_number() == _linear_scan_order->index_of(sux), "incorrect linear_scan_number");

@@ -1044,7 +1102,7 @@ BlockBegin* pred = cur->pred_at(j); assert(pred->linear_scan_number() >= 0 && pred->linear_scan_number() == _linear_scan_order->index_of(pred), "incorrect linear_scan_number");

@@ -1060,7 +1118,8 @@ } else { assert(cur->dominator() != NULL, "all but first block must have dominator"); }

} // check that all loops are continuous @@ -1249,9 +1308,22 @@ } }; +class VerifyBlockBeginField : public BlockClosure { + +public: +

#ifdef ASSERT PredecessorValidator pv(this);

#endif }

--- a/src/share/vm/c1/c1_IR.hpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_IR.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -254,6 +254,7 @@ OopMap* _oop_map; ValueStack* _stack; // used by deoptimization (contains also monitors bool _is_method_handle_invoke; // true if the associated call site is a MethodHandle call site.

--- a/src/share/vm/c1/c1_Instruction.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_Instruction.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -34,6 +34,15 @@ // Implementation of Instruction +int Instruction::dominator_depth() {

} ShouldNotReachHere(); return eql; @@ -56,6 +67,8 @@ case leq: return gtr; case gtr: return leq; case geq: return lss;

} ShouldNotReachHere(); return eql; @@ -70,10 +83,10 @@ } } - -Instruction* Instruction::prev(BlockBegin* block) { +// Prev without need to have BlockBegin +Instruction* Instruction::prev() { Instruction* p = NULL;

+

--- a/src/share/vm/c1/c1_Instruction.hpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_Instruction.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -110,6 +110,8 @@ class ProfileInvoke; class RuntimeCall; class MemBar; +class RangeCheckPredicate; +class Assert; // A Value is a reference to the instruction creating the value typedef Instruction* Value; @@ -210,6 +212,10 @@ virtual void do_ProfileInvoke (ProfileInvoke* x) = 0; virtual void do_RuntimeCall (RuntimeCall* x) = 0; virtual void do_MemBar (MemBar* x) = 0;

}; // Instructions may be pinned for many reasons and under certain conditions @@ -381,6 +391,7 @@ , _pin_state(0) , _type(type) , _next(NULL)

#endif

+ next->set_flag(Instruction::IsLinkedInBlockFlag, true); _next = next; return next; @@ -444,6 +460,29 @@ return set_next(next); }

+#endif

@@ -452,6 +491,7 @@ } void set_exception_handlers(XHandlers xhandlers) { _exception_handlers = xhandlers; } void set_exception_state(ValueStack s) { check_state(s); _exception_state = s; }

#ifndef PRODUCT set_printable_bci(bci); #endif @@ -1612,8 +1662,10 @@ int block_id() const { return _block_id; } int bci() const { return _bci; } BlockList* successors() { return &_successors; }

}; void set(Flag f) { _flags |= f; } @@ -1728,7 +1782,6 @@ BASE(BlockEnd, StateSplit) private:

--- a/src/share/vm/c1/c1_InstructionPrinter.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_InstructionPrinter.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -57,6 +57,8 @@ case If::leq: return "<="; case If::gtr: return ">"; case If::geq: return ">=";

} ShouldNotReachHere(); return NULL; @@ -181,6 +183,11 @@ output()->put('['); print_value(indexed->index()); output()->put(']');

--- a/src/share/vm/c1/c1_InstructionPrinter.hpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_InstructionPrinter.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -135,6 +135,8 @@ virtual void do_ProfileInvoke (ProfileInvoke* x); virtual void do_RuntimeCall (RuntimeCall* x); virtual void do_MemBar (MemBar* x);

#endif // PRODUCT

--- a/src/share/vm/c1/c1_LIR.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_LIR.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -633,6 +633,7 @@ case lir_ushr: case lir_xadd: case lir_xchg:

+#ifdef ASSERT +void LIR_OpAssert::emit_code(LIR_Assembler* masm) {

--- a/src/share/vm/c1/c1_LIR.hpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_LIR.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -881,6 +881,7 @@ class LIR_OpTypeCheck; class LIR_OpCompareAndSwap; class LIR_OpProfileCall; +class LIR_OpAssert; // LIR operation codes @@ -1000,6 +1001,9 @@ , begin_opMDOProfile , lir_profile_call , end_opMDOProfile

} LIR_Op2(LIR_Code code, LIR_Condition condition, LIR_Opr opr1, LIR_Opr opr2, LIR_Opr result, BasicType type) @@ -1683,7 +1688,7 @@ LIR_Opr tmp4_opr() const { return _tmp4; } LIR_Opr tmp5_opr() const { return _tmp5; } LIR_Condition condition() const {

} void set_condition(LIR_Condition condition) { assert(code() == lir_cmp || code() == lir_cmove, "only valid for cmp and cmove"); _condition = condition; @@ -1823,6 +1828,30 @@ CodeEmitInfo* call_info() const { return info(); } }; +#ifdef ASSERT +// LIR_OpAssert +class LIR_OpAssert : public LIR_Op2 {

--- a/src/share/vm/c1/c1_LIRAssembler.hpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_LIRAssembler.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -210,6 +210,9 @@ void arith_op(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr dest, CodeEmitInfo* info, bool pop_fpu_stack); void arithmetic_idiv(LIR_Code code, LIR_Opr left, LIR_Opr right, LIR_Opr temp, LIR_Opr result, CodeEmitInfo* info); void intrinsic_op(LIR_Code code, LIR_Opr value, LIR_Opr unused, LIR_Opr dest, LIR_Op* op); +#ifdef ASSERT

--- a/src/share/vm/c1/c1_LIRGenerator.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_LIRGenerator.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -403,6 +403,10 @@ CodeEmitInfo* LIRGenerator::state_for(Instruction* x, ValueStack* state, bool ignore_xhandler) { assert(state != NULL, "state must be defined"); +#ifndef PRODUCT

#endif

} LIR_Opr reg = rlock_result(x, field_type); @@ -1861,6 +1872,8 @@ void LIRGenerator::do_ArrayLength(ArrayLength* x) {

} __ load(new LIR_Address(array.result(), arrayOopDesc::length_offset_in_bytes(), T_INT), reg, info, lir_patch_none); } @@ -1883,14 +1901,11 @@ LIRItem array(x->array(), this); LIRItem index(x->index(), this); LIRItem length(this);

} array.load_item(); @@ -1910,13 +1925,20 @@ } else { null_check_info = range_check_info; }

} // emit array address setup early so it schedules better LIR_Address* array_addr = emit_array_address(array.result(), index.result(), x->elt_type(), false); if (GenerateRangeChecks && needs_range_check) {

// receiver is guaranteed non-NULL so don't need CodeEmitInfo @@ -2644,7 +2666,7 @@ // increment invocation counters if needed if (!method()->is_accessor()) { // Accessors do not have MDOs, so no counting.

+void LIRGenerator::do_Assert(Assert *x) { +#ifdef ASSERT

+

+

+

+

+

+

+

+

+

+

+

+

--- a/src/share/vm/c1/c1_LIRGenerator.hpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_LIRGenerator.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -412,6 +412,8 @@ case If::leq: l = lir_cond_lessEqual; break; case If::geq: l = lir_cond_greaterEqual; break; case If::gtr: l = lir_cond_greater; break;

--- a/src/share/vm/c1/c1_LinearScan.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_LinearScan.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -6231,26 +6231,29 @@ assert(prev_op->as_OpBranch() != NULL, "branch must be of type LIR_OpBranch"); LIR_OpBranch* prev_branch = (LIR_OpBranch*)prev_op;

-

+

+

-

-

+

+

--- a/src/share/vm/c1/c1_Optimizer.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_Optimizer.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -178,7 +178,7 @@ // 2) substitute conditional expression // with an IfOp followed by a Goto // cut if_ away and get node before

#endif // find instruction before end & append first instruction of sux block

@@ -533,6 +534,8 @@ void do_ProfileInvoke (ProfileInvoke* x); void do_RuntimeCall (RuntimeCall* x); void do_MemBar (MemBar* x);

--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/vm/c1/c1_RangeCheckElimination.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -0,0 +1,1517 @@ +/*

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

+

--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/vm/c1/c1_RangeCheckElimination.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -0,0 +1,241 @@ +/*

+

+

+ +#ifdef ASSERT

+#endif

+

+

+

+

--- a/src/share/vm/c1/c1_Runtime1.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_Runtime1.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -1330,6 +1330,50 @@ return (k != NULL && obj != NULL && obj->is_a(k)) ? 1 : 0; JRT_END +JRT_ENTRY(void, Runtime1::predicate_failed_trap(JavaThread* thread))

#ifndef PRODUCT void Runtime1::print_statistics() {

--- a/src/share/vm/c1/c1_Runtime1.hpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_Runtime1.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -71,6 +71,7 @@ stub(g1_post_barrier_slow) [](#l33.4) stub(fpu2long_stub) [](#l33.5) stub(counter_overflow) [](#l33.6)

#define DECLARE_STUB_ID(x) x ## _id , @@ -190,6 +191,8 @@ static void oop_arraycopy(HeapWord* src, HeapWord* dst, int length); static int is_instance_of(oopDesc* mirror, oopDesc* obj);

--- a/src/share/vm/c1/c1_ValueMap.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_ValueMap.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -26,9 +26,9 @@ #include "c1/c1_Canonicalizer.hpp" #include "c1/c1_IR.hpp" #include "c1/c1_ValueMap.hpp" +#include "c1/c1_ValueStack.hpp" #include "utilities/bitMap.inline.hpp" - #ifndef PRODUCT int ValueMap::_number_of_finds = 0; @@ -192,10 +192,6 @@ && lf->field()->holder() == field->holder() [](#l34.15) && (all_offsets || lf->field()->offset() == field->offset()); -#define MUST_KILL_EXCEPTION(must_kill, entry, value) [](#l34.18)

} bool process(BlockBegin* loop_header); }; +class LoopInvariantCodeMotion : public StackObj {

+

+

+

+

+

+

+

+

+

+

+ ValueMap* pred_map = value_map_of(pred); if (pred_map != NULL) { current_map()->kill_map(pred_map); @@ -336,6 +471,12 @@ } }

TRACE_VALUE_NUMBERING(tty->print("value map before processing block: "); current_map()->print()); // visit all instructions of this block for (Value instr = block->next(); instr != NULL; instr = instr->next()) {

- // check if instruction kills any values instr->visit(this); -

+

--- a/src/share/vm/c1/c1_ValueMap.hpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_ValueMap.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -206,6 +206,8 @@ void do_ProfileInvoke (ProfileInvoke* x) { /* nothing to do / }; void do_RuntimeCall (RuntimeCall x) { /* nothing to do / }; void do_MemBar (MemBar x) { /* nothing to do */ };

#endif // SHARE_VM_C1_C1_VALUEMAP_HPP

--- a/src/share/vm/c1/c1_globals.hpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/c1/c1_globals.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -119,6 +119,24 @@ develop(bool, UseGlobalValueNumbering, true, [](#l36.4) "Use Global Value Numbering (separate phase)") [](#l36.5) [](#l36.6)

--- a/src/share/vm/compiler/compileBroker.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/compiler/compileBroker.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -2166,6 +2166,9 @@ comp->print_timers(); } tty->cr();

--- a/src/share/vm/oops/instanceKlass.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/oops/instanceKlass.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -2228,8 +2228,6 @@ } void InstanceKlass::clean_method_data(BoolObjectClosure* is_alive) { -#ifdef COMPILER2

--- a/src/share/vm/oops/methodData.cpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/oops/methodData.cpp Thu Mar 21 09:27:54 2013 +0100 @@ -392,6 +392,9 @@ } int MethodData::bytecode_cell_count(Bytecodes::Code code) { +#if defined(COMPILER1) && !defined(COMPILER2)

+#if defined(COMPILER1) && !defined(COMPILER2)

--- a/src/share/vm/runtime/globals.hpp Wed Mar 20 17:04:45 2013 -0700 +++ b/src/share/vm/runtime/globals.hpp Thu Mar 21 09:27:54 2013 +0100 @@ -2515,7 +2515,7 @@ "disable locking assertions (for speed)") [](#l40.4) [](#l40.5) product(bool, RangeCheckElimination, true, [](#l40.6)