Unuse labels when bailing out of StubCompiler methods.

There are 3 methods where early return happen before the 
miss label is bound. This is harmless in Release mode, 
in Debug an assertion fails.

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5508 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 31284c01
...@@ -2084,7 +2084,10 @@ Object* LoadStubCompiler::CompileLoadNonexistent(String* name, ...@@ -2084,7 +2084,10 @@ Object* LoadStubCompiler::CompileLoadNonexistent(String* name,
name, name,
r1, r1,
&miss); &miss);
if (cell->IsFailure()) return cell; if (cell->IsFailure()) {
miss.Unuse();
return cell;
}
} }
// Return undefined if maps of the full prototype chain are still the // Return undefined if maps of the full prototype chain are still the
...@@ -2134,7 +2137,10 @@ Object* LoadStubCompiler::CompileLoadCallback(String* name, ...@@ -2134,7 +2137,10 @@ Object* LoadStubCompiler::CompileLoadCallback(String* name,
Failure* failure = Failure::InternalError(); Failure* failure = Failure::InternalError();
bool success = GenerateLoadCallback(object, holder, r0, r2, r3, r1, r4, bool success = GenerateLoadCallback(object, holder, r0, r2, r3, r1, r4,
callback, name, &miss, &failure); callback, name, &miss, &failure);
if (!success) return failure; if (!success) {
miss.Unuse();
return failure;
}
__ bind(&miss); __ bind(&miss);
GenerateLoadMiss(masm(), Code::LOAD_IC); GenerateLoadMiss(masm(), Code::LOAD_IC);
...@@ -2282,7 +2288,10 @@ Object* KeyedLoadStubCompiler::CompileLoadCallback(String* name, ...@@ -2282,7 +2288,10 @@ Object* KeyedLoadStubCompiler::CompileLoadCallback(String* name,
Failure* failure = Failure::InternalError(); Failure* failure = Failure::InternalError();
bool success = GenerateLoadCallback(receiver, holder, r1, r0, r2, r3, r4, bool success = GenerateLoadCallback(receiver, holder, r1, r0, r2, r3, r4,
callback, name, &miss, &failure); callback, name, &miss, &failure);
if (!success) return failure; if (!success) {
miss.Unuse();
return failure;
}
__ bind(&miss); __ bind(&miss);
GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC); GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
......
...@@ -2455,7 +2455,10 @@ Object* LoadStubCompiler::CompileLoadNonexistent(String* name, ...@@ -2455,7 +2455,10 @@ Object* LoadStubCompiler::CompileLoadNonexistent(String* name,
name, name,
edx, edx,
&miss); &miss);
if (cell->IsFailure()) return cell; if (cell->IsFailure()) {
miss.Unuse();
return cell;
}
} }
// Return undefined if maps of the full prototype chain are still the // Return undefined if maps of the full prototype chain are still the
...@@ -2505,7 +2508,10 @@ Object* LoadStubCompiler::CompileLoadCallback(String* name, ...@@ -2505,7 +2508,10 @@ Object* LoadStubCompiler::CompileLoadCallback(String* name,
Failure* failure = Failure::InternalError(); Failure* failure = Failure::InternalError();
bool success = GenerateLoadCallback(object, holder, eax, ecx, ebx, edx, edi, bool success = GenerateLoadCallback(object, holder, eax, ecx, ebx, edx, edi,
callback, name, &miss, &failure); callback, name, &miss, &failure);
if (!success) return failure; if (!success) {
miss.Unuse();
return failure;
}
__ bind(&miss); __ bind(&miss);
GenerateLoadMiss(masm(), Code::LOAD_IC); GenerateLoadMiss(masm(), Code::LOAD_IC);
...@@ -2666,9 +2672,13 @@ Object* KeyedLoadStubCompiler::CompileLoadCallback(String* name, ...@@ -2666,9 +2672,13 @@ Object* KeyedLoadStubCompiler::CompileLoadCallback(String* name,
Failure* failure = Failure::InternalError(); Failure* failure = Failure::InternalError();
bool success = GenerateLoadCallback(receiver, holder, edx, eax, ebx, ecx, edi, bool success = GenerateLoadCallback(receiver, holder, edx, eax, ebx, ecx, edi,
callback, name, &miss, &failure); callback, name, &miss, &failure);
if (!success) return failure; if (!success) {
miss.Unuse();
return failure;
}
__ bind(&miss); __ bind(&miss);
__ DecrementCounter(&Counters::keyed_load_callback, 1); __ DecrementCounter(&Counters::keyed_load_callback, 1);
GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC); GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC);
......
...@@ -1701,7 +1701,10 @@ Object* LoadStubCompiler::CompileLoadCallback(String* name, ...@@ -1701,7 +1701,10 @@ Object* LoadStubCompiler::CompileLoadCallback(String* name,
Failure* failure = Failure::InternalError(); Failure* failure = Failure::InternalError();
bool success = GenerateLoadCallback(object, holder, rax, rcx, rbx, rdx, rdi, bool success = GenerateLoadCallback(object, holder, rax, rcx, rbx, rdx, rdi,
callback, name, &miss, &failure); callback, name, &miss, &failure);
if (!success) return failure; if (!success) {
miss.Unuse();
return failure;
}
__ bind(&miss); __ bind(&miss);
GenerateLoadMiss(masm(), Code::LOAD_IC); GenerateLoadMiss(masm(), Code::LOAD_IC);
...@@ -1757,7 +1760,10 @@ Object* LoadStubCompiler::CompileLoadNonexistent(String* name, ...@@ -1757,7 +1760,10 @@ Object* LoadStubCompiler::CompileLoadNonexistent(String* name,
name, name,
rdx, rdx,
&miss); &miss);
if (cell->IsFailure()) return cell; if (cell->IsFailure()) {
miss.Unuse();
return cell;
}
} }
// Return undefined if maps of the full prototype chain are still the // Return undefined if maps of the full prototype chain are still the
...@@ -1895,7 +1901,10 @@ Object* KeyedLoadStubCompiler::CompileLoadCallback(String* name, ...@@ -1895,7 +1901,10 @@ Object* KeyedLoadStubCompiler::CompileLoadCallback(String* name,
Failure* failure = Failure::InternalError(); Failure* failure = Failure::InternalError();
bool success = GenerateLoadCallback(receiver, holder, rdx, rax, rbx, rcx, rdi, bool success = GenerateLoadCallback(receiver, holder, rdx, rax, rbx, rcx, rdi,
callback, name, &miss, &failure); callback, name, &miss, &failure);
if (!success) return failure; if (!success) {
miss.Unuse();
return failure;
}
__ bind(&miss); __ bind(&miss);
__ DecrementCounter(&Counters::keyed_load_callback, 1); __ DecrementCounter(&Counters::keyed_load_callback, 1);
......
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