Commit b595d914 authored by ager@chromium.org's avatar ager@chromium.org

In my final round of refactoring, I accidentally broke my string

lenght optimization.  Here is the fix: check that the instance type
not the receiver is JS_VALUE_TYPE.

Review URL: http://codereview.chromium.org/8656

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@622 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 867d5043
......@@ -190,7 +190,8 @@ void LoadIC::GenerateStringLength(MacroAssembler* masm) {
__ ldr(r0, MemOperand(sp, 0));
// Check if the object is a string.
// Check if the object is a string leaving the instance type in the
// r1 register.
GenerateStringCheck(masm, r0, r1, r3, &miss, &check_wrapper);
// Load length directly from the string.
......@@ -204,7 +205,7 @@ void LoadIC::GenerateStringLength(MacroAssembler* masm) {
// Check if the object is a JSValue wrapper.
__ bind(&check_wrapper);
__ cmp(r0, Operand(JS_VALUE_TYPE));
__ cmp(r1, Operand(JS_VALUE_TYPE));
__ b(ne, &miss);
// Check if the wrapped value is a string and load the length
......
......@@ -185,7 +185,8 @@ void StubCompiler::GenerateLoadStringLength(MacroAssembler* masm,
Label* miss) {
Label load_length, check_wrapper;
// Check if the object is a string.
// Check if the object is a string leaving the instance type in the
// scratch register.
GenerateStringCheck(masm, receiver, scratch, miss, &check_wrapper);
// Load length directly from the string.
......@@ -200,7 +201,7 @@ void StubCompiler::GenerateLoadStringLength(MacroAssembler* masm,
// Check if the object is a JSValue wrapper.
__ bind(&check_wrapper);
__ cmp(receiver, JS_VALUE_TYPE);
__ cmp(scratch, JS_VALUE_TYPE);
__ j(not_equal, miss, not_taken);
// Check if the wrapped value is a string and load the length
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment