src/cpu/x86/vm/c1_LIRGenerator_x86.cpp

changeset 4051
8a02ca5e5576
parent 4037
da91efe96a93
child 4106
7eca5de9e0b6
     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);

mercurial