src/hotspot/cpu/arm/templateTable_arm.cpp
branchdatagramsocketimpl-branch
changeset 58678 9cf78a70fa4f
parent 53746 bdccafc038a2
child 58679 9c3209ff7550
equal deleted inserted replaced
58677:13588c901957 58678:9cf78a70fa4f
   485   const int base_offset = ConstantPool::header_size() * wordSize;
   485   const int base_offset = ConstantPool::header_size() * wordSize;
   486   const int tags_offset = Array<u1>::base_offset_in_bytes();
   486   const int tags_offset = Array<u1>::base_offset_in_bytes();
   487 
   487 
   488   __ add(Rbase, Rcpool, AsmOperand(Rindex, lsl, LogBytesPerWord));
   488   __ add(Rbase, Rcpool, AsmOperand(Rindex, lsl, LogBytesPerWord));
   489 
   489 
   490   Label Condy, exit;
       
   491 #ifdef __ABI_HARD__
       
   492   Label Long;
       
   493   // get type from tags
   490   // get type from tags
   494   __ add(Rtemp, Rtags, tags_offset);
   491   __ add(Rtemp, Rtags, tags_offset);
   495   __ ldrb(Rtemp, Address(Rtemp, Rindex));
   492   __ ldrb(Rtemp, Address(Rtemp, Rindex));
       
   493 
       
   494   Label Condy, exit;
       
   495 #ifdef __ABI_HARD__
       
   496   Label NotDouble;
   496   __ cmp(Rtemp, JVM_CONSTANT_Double);
   497   __ cmp(Rtemp, JVM_CONSTANT_Double);
   497   __ b(Long, ne);
   498   __ b(NotDouble, ne);
   498   __ ldr_double(D0_tos, Address(Rbase, base_offset));
   499   __ ldr_double(D0_tos, Address(Rbase, base_offset));
   499 
   500 
   500   __ push(dtos);
   501   __ push(dtos);
   501   __ b(exit);
   502   __ b(exit);
   502   __ bind(Long);
   503   __ bind(NotDouble);
   503 #endif
   504 #endif
   504 
   505 
   505   __ cmp(Rtemp, JVM_CONSTANT_Long);
   506   __ cmp(Rtemp, JVM_CONSTANT_Long);
   506   __ b(Condy, ne);
   507   __ b(Condy, ne);
   507   __ ldr(R0_tos_lo, Address(Rbase, base_offset + 0 * wordSize));
   508   __ ldr(R0_tos_lo, Address(Rbase, base_offset + 0 * wordSize));
  4043     // initialize object header only.
  4044     // initialize object header only.
  4044     __ bind(initialize_header);
  4045     __ bind(initialize_header);
  4045     if (UseBiasedLocking) {
  4046     if (UseBiasedLocking) {
  4046       __ ldr(Rtemp, Address(Rklass, Klass::prototype_header_offset()));
  4047       __ ldr(Rtemp, Address(Rklass, Klass::prototype_header_offset()));
  4047     } else {
  4048     } else {
  4048       __ mov_slow(Rtemp, (intptr_t)markOopDesc::prototype());
  4049       __ mov_slow(Rtemp, (intptr_t)markWord::prototype().value());
  4049     }
  4050     }
  4050     // mark
  4051     // mark
  4051     __ str(Rtemp, Address(Robj, oopDesc::mark_offset_in_bytes()));
  4052     __ str(Rtemp, Address(Robj, oopDesc::mark_offset_in_bytes()));
  4052 
  4053 
  4053     // klass
  4054     // klass