1.1 --- a/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp Tue Sep 11 14:59:23 2012 +0200 1.2 +++ b/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp Tue Sep 11 16:20:57 2012 +0200 1.3 @@ -1002,13 +1002,12 @@ 1.4 #endif 1.5 CodeEmitInfo* info = state_for(x, x->state()); 1.6 LIR_Opr reg = result_register_for(x->type()); 1.7 - LIR_Opr klass_reg = new_register(objectType); 1.8 new_instance(reg, x->klass(), 1.9 FrameMap::rcx_oop_opr, 1.10 FrameMap::rdi_oop_opr, 1.11 FrameMap::rsi_oop_opr, 1.12 LIR_OprFact::illegalOpr, 1.13 - FrameMap::rdx_oop_opr, info); 1.14 + FrameMap::rdx_metadata_opr, info); 1.15 LIR_Opr result = rlock_result(x); 1.16 __ move(reg, result); 1.17 } 1.18 @@ -1025,11 +1024,11 @@ 1.19 LIR_Opr tmp2 = FrameMap::rsi_oop_opr; 1.20 LIR_Opr tmp3 = FrameMap::rdi_oop_opr; 1.21 LIR_Opr tmp4 = reg; 1.22 - LIR_Opr klass_reg = FrameMap::rdx_oop_opr; 1.23 + LIR_Opr klass_reg = FrameMap::rdx_metadata_opr; 1.24 LIR_Opr len = length.result(); 1.25 BasicType elem_type = x->elt_type(); 1.26 1.27 - __ oop2reg(ciTypeArrayKlass::make(elem_type)->constant_encoding(), klass_reg); 1.28 + __ metadata2reg(ciTypeArrayKlass::make(elem_type)->constant_encoding(), klass_reg); 1.29 1.30 CodeStub* slow_path = new NewTypeArrayStub(klass_reg, len, reg, info); 1.31 __ allocate_array(reg, len, tmp1, tmp2, tmp3, tmp4, elem_type, klass_reg, slow_path); 1.32 @@ -1055,7 +1054,7 @@ 1.33 LIR_Opr tmp2 = FrameMap::rsi_oop_opr; 1.34 LIR_Opr tmp3 = FrameMap::rdi_oop_opr; 1.35 LIR_Opr tmp4 = reg; 1.36 - LIR_Opr klass_reg = FrameMap::rdx_oop_opr; 1.37 + LIR_Opr klass_reg = FrameMap::rdx_metadata_opr; 1.38 1.39 length.load_item_force(FrameMap::rbx_opr); 1.40 LIR_Opr len = length.result(); 1.41 @@ -1103,17 +1102,18 @@ 1.42 store_stack_parameter(size->result(), in_ByteSize(i*4)); 1.43 } 1.44 1.45 - LIR_Opr reg = result_register_for(x->type()); 1.46 - klass2reg_with_patching(reg, x->klass(), patching_info); 1.47 + LIR_Opr klass_reg = FrameMap::rax_metadata_opr; 1.48 + klass2reg_with_patching(klass_reg, x->klass(), patching_info); 1.49 1.50 LIR_Opr rank = FrameMap::rbx_opr; 1.51 __ move(LIR_OprFact::intConst(x->rank()), rank); 1.52 LIR_Opr varargs = FrameMap::rcx_opr; 1.53 __ move(FrameMap::rsp_opr, varargs); 1.54 LIR_OprList* args = new LIR_OprList(3); 1.55 - args->append(reg); 1.56 + args->append(klass_reg); 1.57 args->append(rank); 1.58 args->append(varargs); 1.59 + LIR_Opr reg = result_register_for(x->type()); 1.60 __ call_runtime(Runtime1::entry_for(Runtime1::new_multi_array_id), 1.61 LIR_OprFact::illegalOpr, 1.62 reg, args, info);