Reviewers: ager_google.com, Description: - Reordered the instructions in the inlined allocation code to space dependent instructions. - Replaced the or instruction with lea.
Please review this at http://codereview.chromium.org/521003 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/ia32/macro-assembler-ia32.cc Index: src/ia32/macro-assembler-ia32.cc =================================================================== --- src/ia32/macro-assembler-ia32.cc (revision 3519) +++ src/ia32/macro-assembler-ia32.cc (working copy) @@ -729,13 +729,13 @@ cmp(result_end, Operand::StaticVariable(new_space_allocation_limit)); j(above, gc_required, not_taken); - // Update allocation top. - UpdateAllocationTopHelper(result_end, scratch); - // Tag result if requested. if ((flags & TAG_OBJECT) != 0) { - or_(Operand(result), Immediate(kHeapObjectTag)); + lea(result, Operand(result, kHeapObjectTag)); } + + // Update allocation top. + UpdateAllocationTopHelper(result_end, scratch); } @@ -759,13 +759,13 @@ cmp(result_end, Operand::StaticVariable(new_space_allocation_limit)); j(above, gc_required); - // Update allocation top. - UpdateAllocationTopHelper(result_end, scratch); - // Tag result if requested. if ((flags & TAG_OBJECT) != 0) { - or_(Operand(result), Immediate(kHeapObjectTag)); + lea(result, Operand(result, kHeapObjectTag)); } + + // Update allocation top. + UpdateAllocationTopHelper(result_end, scratch); } @@ -790,13 +790,13 @@ cmp(result_end, Operand::StaticVariable(new_space_allocation_limit)); j(above, gc_required, not_taken); - // Update allocation top. - UpdateAllocationTopHelper(result_end, scratch); - // Tag result if requested. if ((flags & TAG_OBJECT) != 0) { - or_(Operand(result), Immediate(kHeapObjectTag)); + lea(result, Operand(result, kHeapObjectTag)); } + + // Update allocation top. + UpdateAllocationTopHelper(result_end, scratch); } -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
