Mercurial > hg > truffle
comparison src/cpu/x86/vm/c1_MacroAssembler_x86.cpp @ 4970:33df1aeaebbf
Merge with http://hg.openjdk.java.net/hsx/hsx24/hotspot/
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Mon, 27 Feb 2012 13:10:13 +0100 |
parents | 716a2c5c0656 fd8114661503 |
children | ab906cea36f7 |
comparison
equal
deleted
inserted
replaced
4703:2cfb7fb2dce7 | 4970:33df1aeaebbf |
---|---|
154 | 154 |
155 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register t1, Register t2) { | 155 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register t1, Register t2) { |
156 assert_different_registers(obj, klass, len); | 156 assert_different_registers(obj, klass, len); |
157 if (UseBiasedLocking && !len->is_valid()) { | 157 if (UseBiasedLocking && !len->is_valid()) { |
158 assert_different_registers(obj, klass, len, t1, t2); | 158 assert_different_registers(obj, klass, len, t1, t2); |
159 movptr(t1, Address(klass, Klass::prototype_header_offset_in_bytes() + klassOopDesc::klass_part_offset_in_bytes())); | 159 movptr(t1, Address(klass, Klass::prototype_header_offset())); |
160 movptr(Address(obj, oopDesc::mark_offset_in_bytes()), t1); | 160 movptr(Address(obj, oopDesc::mark_offset_in_bytes()), t1); |
161 } else { | 161 } else { |
162 // This assumes that all prototype bits fit in an int32_t | 162 // This assumes that all prototype bits fit in an int32_t |
163 movptr(Address(obj, oopDesc::mark_offset_in_bytes ()), (int32_t)(intptr_t)markOopDesc::prototype()); | 163 movptr(Address(obj, oopDesc::mark_offset_in_bytes ()), (int32_t)(intptr_t)markOopDesc::prototype()); |
164 } | 164 } |
387 inline_cache_check(receiver, ic_klass); | 387 inline_cache_check(receiver, ic_klass); |
388 } | 388 } |
389 | 389 |
390 | 390 |
391 void C1_MacroAssembler::verified_entry() { | 391 void C1_MacroAssembler::verified_entry() { |
392 if (C1Breakpoint || VerifyFPU || !UseStackBanging) { | |
393 // Verified Entry first instruction should be 5 bytes long for correct | |
394 // patching by patch_verified_entry(). | |
395 // | |
396 // C1Breakpoint and VerifyFPU have one byte first instruction. | |
397 // Also first instruction will be one byte "push(rbp)" if stack banging | |
398 // code is not generated (see build_frame() above). | |
399 // For all these cases generate long instruction first. | |
400 fat_nop(); | |
401 } | |
392 if (C1Breakpoint)int3(); | 402 if (C1Breakpoint)int3(); |
393 // build frame | 403 // build frame |
394 verify_FPU(0, "method_entry"); | 404 verify_FPU(0, "method_entry"); |
395 } | 405 } |
396 | 406 |