src/cpu/x86/vm/c1_MacroAssembler_x86.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7118863 Sdiff src/cpu/x86/vm

src/cpu/x86/vm/c1_MacroAssembler_x86.cpp

Print this page




 133   // done
 134   bind(done);
 135 }
 136 
 137 
 138 // Defines obj, preserves var_size_in_bytes
 139 void C1_MacroAssembler::try_allocate(Register obj, Register var_size_in_bytes, int con_size_in_bytes, Register t1, Register t2, Label& slow_case) {
 140   if (UseTLAB) {
 141     tlab_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case);
 142   } else {
 143     eden_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case);
 144     incr_allocated_bytes(noreg, var_size_in_bytes, con_size_in_bytes, t1);
 145   }
 146 }
 147 
 148 
 149 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register t1, Register t2) {
 150   assert_different_registers(obj, klass, len);
 151   if (UseBiasedLocking && !len->is_valid()) {
 152     assert_different_registers(obj, klass, len, t1, t2);
 153     movptr(t1, Address(klass, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes()));
 154     movptr(Address(obj, oopDesc::mark_offset_in_bytes()), t1);
 155   } else {
 156     // This assumes that all prototype bits fit in an int32_t
 157     movptr(Address(obj, oopDesc::mark_offset_in_bytes ()), (int32_t)(intptr_t)markOopDesc::prototype());
 158   }
 159 #ifdef _LP64
 160   if (UseCompressedOops) { // Take care not to kill klass
 161     movptr(t1, klass);
 162     encode_heap_oop_not_null(t1);
 163     movl(Address(obj, oopDesc::klass_offset_in_bytes()), t1);
 164   } else
 165 #endif
 166   {
 167     movptr(Address(obj, oopDesc::klass_offset_in_bytes()), klass);
 168   }
 169 
 170   if (len->is_valid()) {
 171     movl(Address(obj, arrayOopDesc::length_offset_in_bytes()), len);
 172   }
 173 #ifdef _LP64




 133   // done
 134   bind(done);
 135 }
 136 
 137 
 138 // Defines obj, preserves var_size_in_bytes
 139 void C1_MacroAssembler::try_allocate(Register obj, Register var_size_in_bytes, int con_size_in_bytes, Register t1, Register t2, Label& slow_case) {
 140   if (UseTLAB) {
 141     tlab_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, t2, slow_case);
 142   } else {
 143     eden_allocate(obj, var_size_in_bytes, con_size_in_bytes, t1, slow_case);
 144     incr_allocated_bytes(noreg, var_size_in_bytes, con_size_in_bytes, t1);
 145   }
 146 }
 147 
 148 
 149 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register t1, Register t2) {
 150   assert_different_registers(obj, klass, len);
 151   if (UseBiasedLocking && !len->is_valid()) {
 152     assert_different_registers(obj, klass, len, t1, t2);
 153     movptr(t1, Address(klass, Klass::prototype_header_offset_in_bytes()));
 154     movptr(Address(obj, oopDesc::mark_offset_in_bytes()), t1);
 155   } else {
 156     // This assumes that all prototype bits fit in an int32_t
 157     movptr(Address(obj, oopDesc::mark_offset_in_bytes ()), (int32_t)(intptr_t)markOopDesc::prototype());
 158   }
 159 #ifdef _LP64
 160   if (UseCompressedOops) { // Take care not to kill klass
 161     movptr(t1, klass);
 162     encode_heap_oop_not_null(t1);
 163     movl(Address(obj, oopDesc::klass_offset_in_bytes()), t1);
 164   } else
 165 #endif
 166   {
 167     movptr(Address(obj, oopDesc::klass_offset_in_bytes()), klass);
 168   }
 169 
 170   if (len->is_valid()) {
 171     movl(Address(obj, arrayOopDesc::length_offset_in_bytes()), len);
 172   }
 173 #ifdef _LP64


src/cpu/x86/vm/c1_MacroAssembler_x86.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File