Index: src/arm/stub-cache-arm.cc |
=================================================================== |
--- src/arm/stub-cache-arm.cc (revision 3440) |
+++ src/arm/stub-cache-arm.cc (working copy) |
@@ -446,7 +446,7 @@ |
} |
-void StubCompiler::GenerateLoadCallback(JSObject* object, |
+bool StubCompiler::GenerateLoadCallback(JSObject* object, |
JSObject* holder, |
Register receiver, |
Register name_reg, |
@@ -454,7 +454,8 @@ |
Register scratch2, |
AccessorInfo* callback, |
String* name, |
- Label* miss) { |
+ Label* miss, |
+ Failure** failure) { |
// Check that the receiver isn't a smi. |
__ tst(receiver, Operand(kSmiTagMask)); |
__ b(eq, miss); |
@@ -476,6 +477,8 @@ |
ExternalReference load_callback_property = |
ExternalReference(IC_Utility(IC::kLoadCallbackProperty)); |
__ TailCallRuntime(load_callback_property, 5, 1); |
+ |
+ return true; |
} |
@@ -1003,10 +1006,10 @@ |
} |
-Object* LoadStubCompiler::CompileLoadCallback(JSObject* object, |
+Object* LoadStubCompiler::CompileLoadCallback(String* name, |
+ JSObject* object, |
JSObject* holder, |
- AccessorInfo* callback, |
- String* name) { |
+ AccessorInfo* callback) { |
// ----------- S t a t e ------------- |
// -- r2 : name |
// -- lr : return address |
@@ -1015,7 +1018,11 @@ |
Label miss; |
__ ldr(r0, MemOperand(sp, 0)); |
- GenerateLoadCallback(object, holder, r0, r2, r3, r1, callback, name, &miss); |
+ Failure* failure = Failure::InternalError(); |
+ bool success = GenerateLoadCallback(object, holder, r0, r2, r3, r1, |
+ callback, name, &miss, &failure); |
+ if (!success) return failure; |
+ |
__ bind(&miss); |
GenerateLoadMiss(masm(), Code::LOAD_IC); |
@@ -1168,7 +1175,11 @@ |
__ cmp(r2, Operand(Handle<String>(name))); |
__ b(ne, &miss); |
- GenerateLoadCallback(receiver, holder, r0, r2, r3, r1, callback, name, &miss); |
+ Failure* failure = Failure::InternalError(); |
+ bool success = GenerateLoadCallback(receiver, holder, r0, r2, r3, r1, |
+ callback, name, &miss, &failure); |
+ if (!success) return failure; |
+ |
__ bind(&miss); |
GenerateLoadMiss(masm(), Code::KEYED_LOAD_IC); |