Index: src/ia32/codegen-ia32.cc |
=================================================================== |
--- src/ia32/codegen-ia32.cc (revision 9531) |
+++ src/ia32/codegen-ia32.cc (working copy) |
@@ -39,12 +39,16 @@ |
// Platform-specific RuntimeCallHelper functions. |
void StubRuntimeCallHelper::BeforeCall(MacroAssembler* masm) const { |
- masm->EnterInternalFrame(); |
+ masm->EnterFrame(StackFrame::INTERNAL); |
+ ASSERT(!masm->has_frame()); |
+ masm->set_has_frame(true); |
} |
void StubRuntimeCallHelper::AfterCall(MacroAssembler* masm) const { |
- masm->LeaveInternalFrame(); |
+ masm->LeaveFrame(StackFrame::INTERNAL); |
+ ASSERT(masm->has_frame()); |
+ masm->set_has_frame(false); |
} |
@@ -108,14 +112,14 @@ |
__ mov(edx, dst); |
__ and_(edx, 0xF); |
__ neg(edx); |
- __ add(Operand(edx), Immediate(16)); |
- __ add(dst, Operand(edx)); |
- __ add(src, Operand(edx)); |
- __ sub(Operand(count), edx); |
+ __ add(edx, Immediate(16)); |
+ __ add(dst, edx); |
+ __ add(src, edx); |
+ __ sub(count, edx); |
// edi is now aligned. Check if esi is also aligned. |
Label unaligned_source; |
- __ test(Operand(src), Immediate(0x0F)); |
+ __ test(src, Immediate(0x0F)); |
__ j(not_zero, &unaligned_source); |
{ |
// Copy loop for aligned source and destination. |
@@ -130,11 +134,11 @@ |
__ prefetch(Operand(src, 0x20), 1); |
__ movdqa(xmm0, Operand(src, 0x00)); |
__ movdqa(xmm1, Operand(src, 0x10)); |
- __ add(Operand(src), Immediate(0x20)); |
+ __ add(src, Immediate(0x20)); |
__ movdqa(Operand(dst, 0x00), xmm0); |
__ movdqa(Operand(dst, 0x10), xmm1); |
- __ add(Operand(dst), Immediate(0x20)); |
+ __ add(dst, Immediate(0x20)); |
__ dec(loop_count); |
__ j(not_zero, &loop); |
@@ -142,12 +146,12 @@ |
// At most 31 bytes to copy. |
Label move_less_16; |
- __ test(Operand(count), Immediate(0x10)); |
+ __ test(count, Immediate(0x10)); |
__ j(zero, &move_less_16); |
__ movdqa(xmm0, Operand(src, 0)); |
- __ add(Operand(src), Immediate(0x10)); |
+ __ add(src, Immediate(0x10)); |
__ movdqa(Operand(dst, 0), xmm0); |
- __ add(Operand(dst), Immediate(0x10)); |
+ __ add(dst, Immediate(0x10)); |
__ bind(&move_less_16); |
// At most 15 bytes to copy. Copy 16 bytes at end of string. |
@@ -176,11 +180,11 @@ |
__ prefetch(Operand(src, 0x20), 1); |
__ movdqu(xmm0, Operand(src, 0x00)); |
__ movdqu(xmm1, Operand(src, 0x10)); |
- __ add(Operand(src), Immediate(0x20)); |
+ __ add(src, Immediate(0x20)); |
__ movdqa(Operand(dst, 0x00), xmm0); |
__ movdqa(Operand(dst, 0x10), xmm1); |
- __ add(Operand(dst), Immediate(0x20)); |
+ __ add(dst, Immediate(0x20)); |
__ dec(loop_count); |
__ j(not_zero, &loop); |
@@ -188,12 +192,12 @@ |
// At most 31 bytes to copy. |
Label move_less_16; |
- __ test(Operand(count), Immediate(0x10)); |
+ __ test(count, Immediate(0x10)); |
__ j(zero, &move_less_16); |
__ movdqu(xmm0, Operand(src, 0)); |
- __ add(Operand(src), Immediate(0x10)); |
+ __ add(src, Immediate(0x10)); |
__ movdqa(Operand(dst, 0), xmm0); |
- __ add(Operand(dst), Immediate(0x10)); |
+ __ add(dst, Immediate(0x10)); |
__ bind(&move_less_16); |
// At most 15 bytes to copy. Copy 16 bytes at end of string. |
@@ -228,10 +232,10 @@ |
__ mov(edx, dst); |
__ and_(edx, 0x03); |
__ neg(edx); |
- __ add(Operand(edx), Immediate(4)); // edx = 4 - (dst & 3) |
- __ add(dst, Operand(edx)); |
- __ add(src, Operand(edx)); |
- __ sub(Operand(count), edx); |
+ __ add(edx, Immediate(4)); // edx = 4 - (dst & 3) |
+ __ add(dst, edx); |
+ __ add(src, edx); |
+ __ sub(count, edx); |
// edi is now aligned, ecx holds number of remaning bytes to copy. |
__ mov(edx, count); |