| Index: src/ia32/stub-cache-ia32.cc
|
| diff --git a/src/ia32/stub-cache-ia32.cc b/src/ia32/stub-cache-ia32.cc
|
| index 48f08a9b271a14482b1200e1f9999ef6d0305679..c21dd4f0066c56aef9a303c0c1bc9c0a09820283 100644
|
| --- a/src/ia32/stub-cache-ia32.cc
|
| +++ b/src/ia32/stub-cache-ia32.cc
|
| @@ -1287,9 +1287,11 @@ void CallStubCompiler::GenerateNameCheck(String* name, Label* miss) {
|
| }
|
|
|
|
|
| -void CallStubCompiler::GenerateMissBranch() {
|
| - Handle<Code> ic = ComputeCallMiss(arguments().immediate(), kind_);
|
| - __ jmp(ic, RelocInfo::CODE_TARGET);
|
| +Object* CallStubCompiler::GenerateMissBranch() {
|
| + Object* obj = StubCache::ComputeCallMiss(arguments().immediate(), kind_);
|
| + if (obj->IsFailure()) return obj;
|
| + __ jmp(Handle<Code>(Code::cast(obj)), RelocInfo::CODE_TARGET);
|
| + return obj;
|
| }
|
|
|
|
|
| @@ -1340,7 +1342,8 @@ Object* CallStubCompiler::CompileCallField(JSObject* object,
|
|
|
| // Handle call cache miss.
|
| __ bind(&miss);
|
| - GenerateMissBranch();
|
| + Object* obj = GenerateMissBranch();
|
| + if (obj->IsFailure()) return obj;
|
|
|
| // Return the generated code.
|
| return GetCode(FIELD, name);
|
| @@ -1487,7 +1490,8 @@ Object* CallStubCompiler::CompileArrayPushCall(Object* object,
|
| }
|
|
|
| __ bind(&miss);
|
| - GenerateMissBranch();
|
| + Object* obj = GenerateMissBranch();
|
| + if (obj->IsFailure()) return obj;
|
|
|
| // Return the generated code.
|
| return GetCode(function);
|
| @@ -1570,7 +1574,8 @@ Object* CallStubCompiler::CompileArrayPopCall(Object* object,
|
| 1);
|
|
|
| __ bind(&miss);
|
| - GenerateMissBranch();
|
| + Object* obj = GenerateMissBranch();
|
| + if (obj->IsFailure()) return obj;
|
|
|
| // Return the generated code.
|
| return GetCode(function);
|
| @@ -1633,8 +1638,8 @@ Object* CallStubCompiler::CompileStringCharCodeAtCall(Object* object,
|
| __ ret((argc + 1) * kPointerSize);
|
|
|
| __ bind(&miss);
|
| -
|
| - GenerateMissBranch();
|
| + Object* obj = GenerateMissBranch();
|
| + if (obj->IsFailure()) return obj;
|
|
|
| // Return the generated code.
|
| return GetCode(function);
|
| @@ -1700,9 +1705,8 @@ Object* CallStubCompiler::CompileStringCharAtCall(Object* object,
|
| __ ret((argc + 1) * kPointerSize);
|
|
|
| __ bind(&miss);
|
| - // Restore function name in ecx.
|
| -
|
| - GenerateMissBranch();
|
| + Object* obj = GenerateMissBranch();
|
| + if (obj->IsFailure()) return obj;
|
|
|
| // Return the generated code.
|
| return GetCode(function);
|
| @@ -1856,7 +1860,8 @@ Object* CallStubCompiler::CompileCallConstant(Object* object,
|
| FreeSpaceForFastApiCall(masm(), eax);
|
| }
|
| __ bind(&miss_in_smi_check);
|
| - GenerateMissBranch();
|
| + Object* obj = GenerateMissBranch();
|
| + if (obj->IsFailure()) return obj;
|
|
|
| // Return the generated code.
|
| return GetCode(function);
|
| @@ -1920,7 +1925,8 @@ Object* CallStubCompiler::CompileCallInterceptor(JSObject* object,
|
|
|
| // Handle load cache miss.
|
| __ bind(&miss);
|
| - GenerateMissBranch();
|
| + Object* obj = GenerateMissBranch();
|
| + if (obj->IsFailure()) return obj;
|
|
|
| // Return the generated code.
|
| return GetCode(INTERCEPTOR, name);
|
| @@ -2005,7 +2011,8 @@ Object* CallStubCompiler::CompileCallGlobal(JSObject* object,
|
| // Handle call cache miss.
|
| __ bind(&miss);
|
| __ IncrementCounter(&Counters::call_global_inline_miss, 1);
|
| - GenerateMissBranch();
|
| + Object* obj = GenerateMissBranch();
|
| + if (obj->IsFailure()) return obj;
|
|
|
| // Return the generated code.
|
| return GetCode(NORMAL, name);
|
|
|