diff options
Diffstat (limited to 'src/arm/stub-cache-arm.cc')
-rw-r--r-- | src/arm/stub-cache-arm.cc | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/arm/stub-cache-arm.cc b/src/arm/stub-cache-arm.cc index ff3007c4..8c8e702d 100644 --- a/src/arm/stub-cache-arm.cc +++ b/src/arm/stub-cache-arm.cc @@ -1252,9 +1252,11 @@ void CallStubCompiler::GenerateNameCheck(String* name, Label* miss) { } -void CallStubCompiler::GenerateMissBranch() { - Handle<Code> ic = ComputeCallMiss(arguments().immediate(), kind_); - __ Jump(ic, RelocInfo::CODE_TARGET); +Object* CallStubCompiler::GenerateMissBranch() { + Object* obj = StubCache::ComputeCallMiss(arguments().immediate(), kind_); + if (obj->IsFailure()) return obj; + __ Jump(Handle<Code>(Code::cast(obj)), RelocInfo::CODE_TARGET); + return obj; } @@ -1286,7 +1288,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); @@ -1337,7 +1340,8 @@ Object* CallStubCompiler::CompileArrayPushCall(Object* object, // Handle call cache miss. __ bind(&miss); - GenerateMissBranch(); + Object* obj = GenerateMissBranch(); + if (obj->IsFailure()) return obj; // Return the generated code. return GetCode(function); @@ -1388,7 +1392,8 @@ Object* CallStubCompiler::CompileArrayPopCall(Object* object, // Handle call cache miss. __ bind(&miss); - GenerateMissBranch(); + Object* obj = GenerateMissBranch(); + if (obj->IsFailure()) return obj; // Return the generated code. return GetCode(function); @@ -1561,7 +1566,8 @@ Object* CallStubCompiler::CompileCallConstant(Object* object, } __ bind(&miss_in_smi_check); - GenerateMissBranch(); + Object* obj = GenerateMissBranch(); + if (obj->IsFailure()) return obj; // Return the generated code. return GetCode(function); @@ -1610,7 +1616,8 @@ Object* CallStubCompiler::CompileCallInterceptor(JSObject* object, // Handle call cache miss. __ bind(&miss); - GenerateMissBranch(); + Object* obj = GenerateMissBranch(); + if (obj->IsFailure()) return obj; // Return the generated code. return GetCode(INTERCEPTOR, name); @@ -1694,7 +1701,8 @@ Object* CallStubCompiler::CompileCallGlobal(JSObject* object, // Handle call cache miss. __ bind(&miss); __ IncrementCounter(&Counters::call_global_inline_miss, 1, r1, r3); - GenerateMissBranch(); + Object* obj = GenerateMissBranch(); + if (obj->IsFailure()) return obj; // Return the generated code. return GetCode(NORMAL, name); |