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); |