Index: src/ia32/codegen-ia32.cc |
=================================================================== |
--- src/ia32/codegen-ia32.cc (revision 1807) |
+++ src/ia32/codegen-ia32.cc (working copy) |
@@ -5265,9 +5265,10 @@ |
// The call must be followed by a test eax instruction to indicate |
// that the inobject property case was inlined. |
ASSERT(answer.is_register() && answer.reg().is(eax)); |
- // Store the delta to the map check instruction here in the test |
- // instruction. |
- int delta_to_patch_site = __ SizeOfCodeGeneratedSince(patch_site()); |
+ // Store the delta to the map check instruction here in the test instruction. |
+ // Use masm_-> instead of the double underscore macro since the latter can't |
+ // return a value. |
+ int delta_to_patch_site = masm_->SizeOfCodeGeneratedSince(patch_site()); |
// Here we use masm_-> instead of the double underscore macro because |
// this is the instruction that gets patched and coverage code gets in |
// the way. |
@@ -5417,8 +5418,10 @@ |
__ bind(deferred->patch_site()); |
// This is the map check instruction that will be patched. |
// Initially use an invalid map to force a failure. |
- __ cmp(FieldOperand(receiver.reg(), HeapObject::kMapOffset), |
- Immediate(Factory::null_value())); |
+ masm->cmp(FieldOperand(receiver.reg(), HeapObject::kMapOffset), |
+ Immediate(Factory::null_value())); |
+ // This branch is always a forwards branch so it's always a fixed |
+ // size which allows the assert below to succeed and patching to work. |
William Hesse
2009/04/29 09:56:46
Should you explain the motivation for these other
|
deferred->enter()->Branch(not_equal, &receiver, not_taken); |
// The delta from the patch label to the load offset must be |
@@ -5429,7 +5432,7 @@ |
// a 32-bit instruction encoding to allow patching with an |
// arbitrary offset. Use kMaxInt (minus kHeapObjectTag). |
int offset = kMaxInt; |
- __ mov(value.reg(), FieldOperand(receiver.reg(), offset)); |
+ masm->mov(value.reg(), FieldOperand(receiver.reg(), offset)); |
__ IncrementCounter(&Counters::named_load_inline, 1); |
deferred->BindExit(&receiver, &value); |