Change __ mov(eax, TOS) to
authorfeng.qian.v8 <feng.qian.v8@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 2 Sep 2008 21:47:45 +0000 (21:47 +0000)
committerfeng.qian.v8 <feng.qian.v8@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 2 Sep 2008 21:47:45 +0000 (21:47 +0000)
commit6287c675d81f20356096918ba2a4970cf532d6bf
treea9ac9924bc2e2a4be7bebe46b3e99530d47d7ac8
parent786760039e0b41cf9883ca7bfa92a4712cc5c483
Change __ mov(eax, TOS) to
__ pop(eax);
...
__ push(eax);
to enable push/pop eliminations.

__ push(eax) must happen before RecordWrite because RecordWrite may destroy
eax value. To be safe, also moved __ push(r0) on ARM to above RecordWrite.

This only affects the case where a context variable is used in a inner scope.

Create a tests for it. It fails if __ push(eax) is after RecordWrite.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@111 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
src/codegen-arm.cc
src/codegen-ia32.cc
test/mjsunit/context-variable-assignments.js [new file with mode: 0644]