Reviewers: Karl Klose, Description: Fix bug in r6930 and r6933
The loading the register used for the null object was to early and it could be
clobbered. [email protected] BUG=none TEST=mozilla/ecma_3/Statements/regress-131348 Please review this at http://codereview.chromium.org/6578020/ SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/arm/full-codegen-arm.cc M src/x64/full-codegen-x64.cc Index: src/arm/full-codegen-arm.cc =================================================================== --- src/arm/full-codegen-arm.cc (revision 6935) +++ src/arm/full-codegen-arm.cc (working copy) @@ -880,10 +880,6 @@ ForIn loop_statement(this, stmt); increment_loop_depth(); - // Load null value as it is used several times below. - Register null_value = r5; - __ LoadRoot(null_value, Heap::kNullValueRootIndex); - // Get the object to enumerate over. Both SpiderMonkey and JSC // ignore null and undefined in contrast to the specification; see // ECMA-262 section 12.6.4. @@ -891,6 +887,8 @@ __ LoadRoot(ip, Heap::kUndefinedValueRootIndex); __ cmp(r0, ip); __ b(eq, &exit); + Register null_value = r5; + __ LoadRoot(null_value, Heap::kNullValueRootIndex); __ cmp(r0, null_value); __ b(eq, &exit); Index: src/x64/full-codegen-x64.cc =================================================================== --- src/x64/full-codegen-x64.cc (revision 6935) +++ src/x64/full-codegen-x64.cc (working copy) @@ -854,16 +854,14 @@ ForIn loop_statement(this, stmt); increment_loop_depth(); - // Load null value as it is used several times below. - Register null_value = rdi; - __ LoadRoot(null_value, Heap::kNullValueRootIndex); - // Get the object to enumerate over. Both SpiderMonkey and JSC // ignore null and undefined in contrast to the specification; see // ECMA-262 section 12.6.4. VisitForAccumulatorValue(stmt->enumerable()); __ CompareRoot(rax, Heap::kUndefinedValueRootIndex); __ j(equal, &exit); + Register null_value = rdi; + __ LoadRoot(null_value, Heap::kNullValueRootIndex); __ cmpq(rax, null_value); __ j(equal, &exit); -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
