< prev index next >

src/hotspot/cpu/arm/c1_MacroAssembler_arm.cpp

Print this page




  73 }
  74 
  75 void C1_MacroAssembler::remove_frame(int frame_size_in_bytes) {
  76   add_slow(SP, SP, frame_size_in_bytes);
  77   raw_pop(FP, LR);
  78 }
  79 
  80 void C1_MacroAssembler::verified_entry() {
  81   if (C1Breakpoint) {
  82     breakpoint();
  83   }
  84 }
  85 
  86 // Puts address of allocated object into register `obj` and end of allocated object into register `obj_end`.
  87 void C1_MacroAssembler::try_allocate(Register obj, Register obj_end, Register tmp1, Register tmp2,
  88                                      RegisterOrConstant size_expression, Label& slow_case) {
  89   if (UseTLAB) {
  90     tlab_allocate(obj, obj_end, tmp1, size_expression, slow_case);
  91   } else {
  92     eden_allocate(obj, obj_end, tmp1, tmp2, size_expression, slow_case);
  93     incr_allocated_bytes(size_expression, tmp1);
  94   }
  95 }
  96 
  97 
  98 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register tmp) {
  99   assert_different_registers(obj, klass, len, tmp);
 100 
 101   if(UseBiasedLocking && !len->is_valid()) {
 102     ldr(tmp, Address(klass, Klass::prototype_header_offset()));
 103   } else {
 104     mov(tmp, (intptr_t)markOopDesc::prototype());
 105   }
 106 
 107 #ifdef AARCH64
 108   if (UseCompressedClassPointers) {
 109     str(tmp, Address(obj, oopDesc::mark_offset_in_bytes()));
 110     encode_klass_not_null(tmp, klass);          // Take care not to kill klass
 111     str_w(tmp, Address(obj, oopDesc::klass_offset_in_bytes()));
 112   } else {
 113     assert(oopDesc::mark_offset_in_bytes() + wordSize == oopDesc::klass_offset_in_bytes(), "adjust this code");




  73 }
  74 
  75 void C1_MacroAssembler::remove_frame(int frame_size_in_bytes) {
  76   add_slow(SP, SP, frame_size_in_bytes);
  77   raw_pop(FP, LR);
  78 }
  79 
  80 void C1_MacroAssembler::verified_entry() {
  81   if (C1Breakpoint) {
  82     breakpoint();
  83   }
  84 }
  85 
  86 // Puts address of allocated object into register `obj` and end of allocated object into register `obj_end`.
  87 void C1_MacroAssembler::try_allocate(Register obj, Register obj_end, Register tmp1, Register tmp2,
  88                                      RegisterOrConstant size_expression, Label& slow_case) {
  89   if (UseTLAB) {
  90     tlab_allocate(obj, obj_end, tmp1, size_expression, slow_case);
  91   } else {
  92     eden_allocate(obj, obj_end, tmp1, tmp2, size_expression, slow_case);

  93   }
  94 }
  95 
  96 
  97 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register tmp) {
  98   assert_different_registers(obj, klass, len, tmp);
  99 
 100   if(UseBiasedLocking && !len->is_valid()) {
 101     ldr(tmp, Address(klass, Klass::prototype_header_offset()));
 102   } else {
 103     mov(tmp, (intptr_t)markOopDesc::prototype());
 104   }
 105 
 106 #ifdef AARCH64
 107   if (UseCompressedClassPointers) {
 108     str(tmp, Address(obj, oopDesc::mark_offset_in_bytes()));
 109     encode_klass_not_null(tmp, klass);          // Take care not to kill klass
 110     str_w(tmp, Address(obj, oopDesc::klass_offset_in_bytes()));
 111   } else {
 112     assert(oopDesc::mark_offset_in_bytes() + wordSize == oopDesc::klass_offset_in_bytes(), "adjust this code");


< prev index next >