提交 8408bbc9 编写于 作者: A acorn

Merge

...@@ -121,3 +121,5 @@ e44a93947ccbfce712b51725f313163606f15486 jdk7-b108 ...@@ -121,3 +121,5 @@ e44a93947ccbfce712b51725f313163606f15486 jdk7-b108
cc4bb3022b3144dc5db0805b9ef6c7eff2aa3b81 jdk7-b109 cc4bb3022b3144dc5db0805b9ef6c7eff2aa3b81 jdk7-b109
2f25f2b8de2700a1822463b1bd3d02b5e218018f jdk7-b110 2f25f2b8de2700a1822463b1bd3d02b5e218018f jdk7-b110
07b042e13dde4f3479ba9ec55120fcd5e8623323 jdk7-b111 07b042e13dde4f3479ba9ec55120fcd5e8623323 jdk7-b111
5511edd5d719f3fc9fdd04879482026a3d2c8652 jdk7-b112
5511edd5d719f3fc9fdd04879482026a3d2c8652 hs20-b01
...@@ -15,5 +15,6 @@ fix_lines() { ...@@ -15,5 +15,6 @@ fix_lines() {
' F2=$2 ' F2=$2
mv $1+ $1 mv $1+ $1
} }
[ -f $3/$1 ] && (fix_lines $2/$1 $3/$1; cmp -s $2/$1 $3/$1) || \ fix_lines $2/$1 $3/$1
[ -f $3/$1 ] && cmp -s $2/$1 $3/$1 || \
( [ -f $3/$1 ] && echo Updating $3/$1 ; touch $2/made-change ; mv $2/$1 $3/$1 ) ( [ -f $3/$1 ] && echo Updating $3/$1 ; touch $2/made-change ; mv $2/$1 $3/$1 )
...@@ -15,5 +15,6 @@ fix_lines() { ...@@ -15,5 +15,6 @@ fix_lines() {
' F2=$2 ' F2=$2
mv $1+ $1 mv $1+ $1
} }
[ -f $3/$1 ] && (fix_lines $2/$1 $3/$1; cmp -s $2/$1 $3/$1) || \ fix_lines $2/$1 $3/$1
[ -f $3/$1 ] && cmp -s $2/$1 $3/$1 || \
( [ -f $3/$1 ] && echo Updating $3/$1 ; touch $2/made-change ; mv $2/$1 $3/$1 ) ( [ -f $3/$1 ] && echo Updating $3/$1 ; touch $2/made-change ; mv $2/$1 $3/$1 )
...@@ -35,7 +35,8 @@ ifeq ("${Platform_compiler}", "sparcWorks") ...@@ -35,7 +35,8 @@ ifeq ("${Platform_compiler}", "sparcWorks")
# Temporary until SS10 C++ compiler is fixed # Temporary until SS10 C++ compiler is fixed
OPT_CFLAGS/generateOptoStub.o = -xO2 OPT_CFLAGS/generateOptoStub.o = -xO2
# Temporary util SS12u1 C++ compiler is fixed
OPT_CFLAGS/c1_LinearScan.o = -xO2
else else
ifeq ("${Platform_compiler}", "gcc") ifeq ("${Platform_compiler}", "gcc")
......
...@@ -51,9 +51,9 @@ ifeq ($(JRE_RELEASE_VER),1.6.0) ...@@ -51,9 +51,9 @@ ifeq ($(JRE_RELEASE_VER),1.6.0)
VALIDATED_COMPILER_REVS := 5.8 VALIDATED_COMPILER_REVS := 5.8
VALIDATED_C_COMPILER_REVS := 5.8 VALIDATED_C_COMPILER_REVS := 5.8
else else
# Validated compilers for JDK7 are SS12 (5.9) or SS12 update 1 (5.10) # Validated compiler for JDK7 is SS12 update 1 + patches (5.10)
VALIDATED_COMPILER_REVS := 5.9 5.10 VALIDATED_COMPILER_REVS := 5.10
VALIDATED_C_COMPILER_REVS := 5.9 5.10 VALIDATED_C_COMPILER_REVS := 5.10
endif endif
# Warning messages about not using the above validated versions # Warning messages about not using the above validated versions
......
...@@ -32,6 +32,7 @@ RangeCheckStub::RangeCheckStub(CodeEmitInfo* info, LIR_Opr index, ...@@ -32,6 +32,7 @@ RangeCheckStub::RangeCheckStub(CodeEmitInfo* info, LIR_Opr index,
: _throw_index_out_of_bounds_exception(throw_index_out_of_bounds_exception) : _throw_index_out_of_bounds_exception(throw_index_out_of_bounds_exception)
, _index(index) , _index(index)
{ {
assert(info != NULL, "must have info");
_info = new CodeEmitInfo(info); _info = new CodeEmitInfo(info);
} }
......
...@@ -420,7 +420,8 @@ int LIR_Assembler::emit_unwind_handler() { ...@@ -420,7 +420,8 @@ int LIR_Assembler::emit_unwind_handler() {
} }
if (compilation()->env()->dtrace_method_probes()) { if (compilation()->env()->dtrace_method_probes()) {
jobject2reg(method()->constant_encoding(), O0); __ mov(G2_thread, O0);
jobject2reg(method()->constant_encoding(), O1);
__ call(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), relocInfo::runtime_call_type); __ call(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), relocInfo::runtime_call_type);
__ delayed()->nop(); __ delayed()->nop();
} }
......
...@@ -311,7 +311,7 @@ void LIRGenerator::store_stack_parameter (LIR_Opr item, ByteSize offset_from_sp) ...@@ -311,7 +311,7 @@ void LIRGenerator::store_stack_parameter (LIR_Opr item, ByteSize offset_from_sp)
void LIRGenerator::do_StoreIndexed(StoreIndexed* x) { void LIRGenerator::do_StoreIndexed(StoreIndexed* x) {
assert(x->is_root(),""); assert(x->is_pinned(),"");
bool needs_range_check = true; bool needs_range_check = true;
bool use_length = x->length() != NULL; bool use_length = x->length() != NULL;
bool obj_store = x->elt_type() == T_ARRAY || x->elt_type() == T_OBJECT; bool obj_store = x->elt_type() == T_ARRAY || x->elt_type() == T_OBJECT;
...@@ -386,7 +386,7 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) { ...@@ -386,7 +386,7 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) {
void LIRGenerator::do_MonitorEnter(MonitorEnter* x) { void LIRGenerator::do_MonitorEnter(MonitorEnter* x) {
assert(x->is_root(),""); assert(x->is_pinned(),"");
LIRItem obj(x->obj(), this); LIRItem obj(x->obj(), this);
obj.load_item(); obj.load_item();
...@@ -398,7 +398,7 @@ void LIRGenerator::do_MonitorEnter(MonitorEnter* x) { ...@@ -398,7 +398,7 @@ void LIRGenerator::do_MonitorEnter(MonitorEnter* x) {
CodeEmitInfo* info_for_exception = NULL; CodeEmitInfo* info_for_exception = NULL;
if (x->needs_null_check()) { if (x->needs_null_check()) {
info_for_exception = state_for(x, x->lock_stack_before()); info_for_exception = state_for(x);
} }
// this CodeEmitInfo must not have the xhandlers because here the // this CodeEmitInfo must not have the xhandlers because here the
...@@ -409,7 +409,7 @@ void LIRGenerator::do_MonitorEnter(MonitorEnter* x) { ...@@ -409,7 +409,7 @@ void LIRGenerator::do_MonitorEnter(MonitorEnter* x) {
void LIRGenerator::do_MonitorExit(MonitorExit* x) { void LIRGenerator::do_MonitorExit(MonitorExit* x) {
assert(x->is_root(),""); assert(x->is_pinned(),"");
LIRItem obj(x->obj(), this); LIRItem obj(x->obj(), this);
obj.dont_load_item(); obj.dont_load_item();
...@@ -871,10 +871,11 @@ void LIRGenerator::do_NewInstance(NewInstance* x) { ...@@ -871,10 +871,11 @@ void LIRGenerator::do_NewInstance(NewInstance* x) {
// This instruction can be deoptimized in the slow path : use // This instruction can be deoptimized in the slow path : use
// O0 as result register. // O0 as result register.
const LIR_Opr reg = result_register_for(x->type()); const LIR_Opr reg = result_register_for(x->type());
#ifndef PRODUCT
if (PrintNotLoaded && !x->klass()->is_loaded()) { if (PrintNotLoaded && !x->klass()->is_loaded()) {
tty->print_cr(" ###class not loaded at new bci %d", x->bci()); tty->print_cr(" ###class not loaded at new bci %d", x->printable_bci());
} }
#endif
CodeEmitInfo* info = state_for(x, x->state()); CodeEmitInfo* info = state_for(x, x->state());
LIR_Opr tmp1 = FrameMap::G1_oop_opr; LIR_Opr tmp1 = FrameMap::G1_oop_opr;
LIR_Opr tmp2 = FrameMap::G3_oop_opr; LIR_Opr tmp2 = FrameMap::G3_oop_opr;
...@@ -1018,7 +1019,7 @@ void LIRGenerator::do_CheckCast(CheckCast* x) { ...@@ -1018,7 +1019,7 @@ void LIRGenerator::do_CheckCast(CheckCast* x) {
obj.load_item(); obj.load_item();
LIR_Opr out_reg = rlock_result(x); LIR_Opr out_reg = rlock_result(x);
CodeStub* stub; CodeStub* stub;
CodeEmitInfo* info_for_exception = state_for(x, x->state()->copy_locks()); CodeEmitInfo* info_for_exception = state_for(x);
if (x->is_incompatible_class_change_check()) { if (x->is_incompatible_class_change_check()) {
assert(patching_info == NULL, "can't patch this"); assert(patching_info == NULL, "can't patch this");
......
...@@ -83,7 +83,8 @@ RangeCheckStub::RangeCheckStub(CodeEmitInfo* info, LIR_Opr index, ...@@ -83,7 +83,8 @@ RangeCheckStub::RangeCheckStub(CodeEmitInfo* info, LIR_Opr index,
: _throw_index_out_of_bounds_exception(throw_index_out_of_bounds_exception) : _throw_index_out_of_bounds_exception(throw_index_out_of_bounds_exception)
, _index(index) , _index(index)
{ {
_info = info == NULL ? NULL : new CodeEmitInfo(info); assert(info != NULL, "must have info");
_info = new CodeEmitInfo(info);
} }
......
...@@ -488,7 +488,9 @@ int LIR_Assembler::emit_unwind_handler() { ...@@ -488,7 +488,9 @@ int LIR_Assembler::emit_unwind_handler() {
} }
if (compilation()->env()->dtrace_method_probes()) { if (compilation()->env()->dtrace_method_probes()) {
__ movoop(Address(rsp, 0), method()->constant_encoding()); __ get_thread(rax);
__ movptr(Address(rsp, 0), rax);
__ movoop(Address(rsp, sizeof(void*)), method()->constant_encoding());
__ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit))); __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit)));
} }
...@@ -1616,8 +1618,7 @@ void LIR_Assembler::emit_alloc_array(LIR_OpAllocArray* op) { ...@@ -1616,8 +1618,7 @@ void LIR_Assembler::emit_alloc_array(LIR_OpAllocArray* op) {
void LIR_Assembler::type_profile_helper(Register mdo, void LIR_Assembler::type_profile_helper(Register mdo,
ciMethodData *md, ciProfileData *data, ciMethodData *md, ciProfileData *data,
Register recv, Label* update_done) { Register recv, Label* update_done) {
uint i; for (uint i = 0; i < ReceiverTypeData::row_limit(); i++) {
for (i = 0; i < ReceiverTypeData::row_limit(); i++) {
Label next_test; Label next_test;
// See if the receiver is receiver[n]. // See if the receiver is receiver[n].
__ cmpptr(recv, Address(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i)))); __ cmpptr(recv, Address(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i))));
...@@ -1629,7 +1630,7 @@ void LIR_Assembler::type_profile_helper(Register mdo, ...@@ -1629,7 +1630,7 @@ void LIR_Assembler::type_profile_helper(Register mdo,
} }
// Didn't find receiver; find next empty slot and fill it in // Didn't find receiver; find next empty slot and fill it in
for (i = 0; i < ReceiverTypeData::row_limit(); i++) { for (uint i = 0; i < ReceiverTypeData::row_limit(); i++) {
Label next_test; Label next_test;
Address recv_addr(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i))); Address recv_addr(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i)));
__ cmpptr(recv_addr, (intptr_t)NULL_WORD); __ cmpptr(recv_addr, (intptr_t)NULL_WORD);
......
...@@ -107,7 +107,7 @@ bool LIRGenerator::can_store_as_constant(Value v, BasicType type) const { ...@@ -107,7 +107,7 @@ bool LIRGenerator::can_store_as_constant(Value v, BasicType type) const {
return false; return false;
} }
Constant* c = v->as_Constant(); Constant* c = v->as_Constant();
if (c && c->state() == NULL) { if (c && c->state_before() == NULL) {
// constants of any type can be stored directly, except for // constants of any type can be stored directly, except for
// unloaded object constants. // unloaded object constants.
return true; return true;
...@@ -250,7 +250,7 @@ void LIRGenerator::store_stack_parameter (LIR_Opr item, ByteSize offset_from_sp) ...@@ -250,7 +250,7 @@ void LIRGenerator::store_stack_parameter (LIR_Opr item, ByteSize offset_from_sp)
void LIRGenerator::do_StoreIndexed(StoreIndexed* x) { void LIRGenerator::do_StoreIndexed(StoreIndexed* x) {
assert(x->is_root(),""); assert(x->is_pinned(),"");
bool needs_range_check = true; bool needs_range_check = true;
bool use_length = x->length() != NULL; bool use_length = x->length() != NULL;
bool obj_store = x->elt_type() == T_ARRAY || x->elt_type() == T_OBJECT; bool obj_store = x->elt_type() == T_ARRAY || x->elt_type() == T_OBJECT;
...@@ -325,7 +325,7 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) { ...@@ -325,7 +325,7 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) {
void LIRGenerator::do_MonitorEnter(MonitorEnter* x) { void LIRGenerator::do_MonitorEnter(MonitorEnter* x) {
assert(x->is_root(),""); assert(x->is_pinned(),"");
LIRItem obj(x->obj(), this); LIRItem obj(x->obj(), this);
obj.load_item(); obj.load_item();
...@@ -341,7 +341,7 @@ void LIRGenerator::do_MonitorEnter(MonitorEnter* x) { ...@@ -341,7 +341,7 @@ void LIRGenerator::do_MonitorEnter(MonitorEnter* x) {
CodeEmitInfo* info_for_exception = NULL; CodeEmitInfo* info_for_exception = NULL;
if (x->needs_null_check()) { if (x->needs_null_check()) {
info_for_exception = state_for(x, x->lock_stack_before()); info_for_exception = state_for(x);
} }
// this CodeEmitInfo must not have the xhandlers because here the // this CodeEmitInfo must not have the xhandlers because here the
// object is already locked (xhandlers expect object to be unlocked) // object is already locked (xhandlers expect object to be unlocked)
...@@ -352,7 +352,7 @@ void LIRGenerator::do_MonitorEnter(MonitorEnter* x) { ...@@ -352,7 +352,7 @@ void LIRGenerator::do_MonitorEnter(MonitorEnter* x) {
void LIRGenerator::do_MonitorExit(MonitorExit* x) { void LIRGenerator::do_MonitorExit(MonitorExit* x) {
assert(x->is_root(),""); assert(x->is_pinned(),"");
LIRItem obj(x->obj(), this); LIRItem obj(x->obj(), this);
obj.dont_load_item(); obj.dont_load_item();
...@@ -984,9 +984,11 @@ void LIRGenerator::do_Convert(Convert* x) { ...@@ -984,9 +984,11 @@ void LIRGenerator::do_Convert(Convert* x) {
void LIRGenerator::do_NewInstance(NewInstance* x) { void LIRGenerator::do_NewInstance(NewInstance* x) {
#ifndef PRODUCT
if (PrintNotLoaded && !x->klass()->is_loaded()) { if (PrintNotLoaded && !x->klass()->is_loaded()) {
tty->print_cr(" ###class not loaded at new bci %d", x->bci()); tty->print_cr(" ###class not loaded at new bci %d", x->printable_bci());
} }
#endif
CodeEmitInfo* info = state_for(x, x->state()); CodeEmitInfo* info = state_for(x, x->state());
LIR_Opr reg = result_register_for(x->type()); LIR_Opr reg = result_register_for(x->type());
LIR_Opr klass_reg = new_register(objectType); LIR_Opr klass_reg = new_register(objectType);
...@@ -1127,7 +1129,7 @@ void LIRGenerator::do_CheckCast(CheckCast* x) { ...@@ -1127,7 +1129,7 @@ void LIRGenerator::do_CheckCast(CheckCast* x) {
obj.load_item(); obj.load_item();
// info for exceptions // info for exceptions
CodeEmitInfo* info_for_exception = state_for(x, x->state()->copy_locks()); CodeEmitInfo* info_for_exception = state_for(x);
CodeStub* stub; CodeStub* stub;
if (x->is_incompatible_class_change_check()) { if (x->is_incompatible_class_change_check()) {
......
...@@ -346,7 +346,7 @@ void trace_method_handle_stub(const char* adaptername, ...@@ -346,7 +346,7 @@ void trace_method_handle_stub(const char* adaptername,
if (stack_dump_count > 64) stack_dump_count = 48; if (stack_dump_count > 64) stack_dump_count = 48;
for (i = 0; i < stack_dump_count; i += 4) { for (i = 0; i < stack_dump_count; i += 4) {
printf(" dump at SP[%d] "INTPTR_FORMAT": "INTPTR_FORMAT" "INTPTR_FORMAT" "INTPTR_FORMAT" "INTPTR_FORMAT"\n", printf(" dump at SP[%d] "INTPTR_FORMAT": "INTPTR_FORMAT" "INTPTR_FORMAT" "INTPTR_FORMAT" "INTPTR_FORMAT"\n",
i, (intptr_t)&entry_sp[i+0], entry_sp[i+0], entry_sp[i+1], entry_sp[i+2], entry_sp[i+3]); i, (intptr_t) &entry_sp[i+0], entry_sp[i+0], entry_sp[i+1], entry_sp[i+2], entry_sp[i+3]);
} }
print_method_handle(mh); print_method_handle(mh);
} }
......
此差异已折叠。
此差异已折叠。
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
* *
*/ */
class BlockBegin;
class CompilationResourceObj; class CompilationResourceObj;
class XHandlers; class XHandlers;
class ExceptionInfo; class ExceptionInfo;
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
...@@ -316,7 +316,7 @@ void InstructionPrinter::print_head() { ...@@ -316,7 +316,7 @@ void InstructionPrinter::print_head() {
void InstructionPrinter::print_line(Instruction* instr) { void InstructionPrinter::print_line(Instruction* instr) {
// print instruction data on one line // print instruction data on one line
if (instr->is_pinned()) output()->put('.'); if (instr->is_pinned()) output()->put('.');
fill_to(bci_pos ); output()->print("%d", instr->bci()); fill_to(bci_pos ); output()->print("%d", instr->printable_bci());
fill_to(use_pos ); output()->print("%d", instr->use_count()); fill_to(use_pos ); output()->print("%d", instr->use_count());
fill_to(temp_pos ); print_temp(instr); fill_to(temp_pos ); print_temp(instr);
fill_to(instr_pos); print_instr(instr); fill_to(instr_pos); print_instr(instr);
...@@ -569,7 +569,7 @@ void InstructionPrinter::do_BlockBegin(BlockBegin* x) { ...@@ -569,7 +569,7 @@ void InstructionPrinter::do_BlockBegin(BlockBegin* x) {
if (printed_flag) output()->print(") "); if (printed_flag) output()->print(") ");
// print block bci range // print block bci range
output()->print("[%d, %d]", x->bci(), (end == NULL ? -1 : end->bci())); output()->print("[%d, %d]", x->bci(), (end == NULL ? -1 : end->printable_bci()));
// print block successors // print block successors
if (end != NULL && end->number_of_sux() > 0) { if (end != NULL && end->number_of_sux() > 0) {
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
...@@ -346,7 +346,7 @@ class LinearScan : public CompilationResourceObj { ...@@ -346,7 +346,7 @@ class LinearScan : public CompilationResourceObj {
int append_scope_value_for_operand(LIR_Opr opr, GrowableArray<ScopeValue*>* scope_values); int append_scope_value_for_operand(LIR_Opr opr, GrowableArray<ScopeValue*>* scope_values);
int append_scope_value(int op_id, Value value, GrowableArray<ScopeValue*>* scope_values); int append_scope_value(int op_id, Value value, GrowableArray<ScopeValue*>* scope_values);
IRScopeDebugInfo* compute_debug_info_for_scope(int op_id, IRScope* cur_scope, ValueStack* cur_state, ValueStack* innermost_state, int cur_bci, int stack_end, int locks_end); IRScopeDebugInfo* compute_debug_info_for_scope(int op_id, IRScope* cur_scope, ValueStack* cur_state, ValueStack* innermost_state);
void compute_debug_info(CodeEmitInfo* info, int op_id); void compute_debug_info(CodeEmitInfo* info, int op_id);
void assign_reg_num(LIR_OpList* instructions, IntervalWalker* iw); void assign_reg_num(LIR_OpList* instructions, IntervalWalker* iw);
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册