Reviewers: William Hesse, Description: Unbreak IA32 generated code coverage.
Please review this at http://codereview.chromium.org/100156 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/ia32/codegen-ia32.cc M src/ia32/jump-target-ia32.cc 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. 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); Index: src/ia32/jump-target-ia32.cc =================================================================== --- src/ia32/jump-target-ia32.cc (revision 1807) +++ src/ia32/jump-target-ia32.cc (working copy) @@ -115,11 +115,13 @@ __ bind(&original_fall_through); } else { - // Forward branch. A copy of the current frame is added to the end - // of the list of frames reaching the target block and a branch to - // the merge code is emitted. + // Forward branch. A copy of the current frame is added to the end of the + // list of frames reaching the target block and a branch to the merge code + // is emitted. Use masm_-> instead of __ as forward branches are expected + // to be a fixed size (no inserted coverage-checking instructions please). + // This is used in Reference::GetValue. AddReachingFrame(new VirtualFrame(cgen_->frame())); - __ j(cc, &merge_labels_.last(), hint); + masm_->j(cc, &merge_labels_.last(), hint); is_linked_ = true; } } --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
