Index: src/runtime.cc |
diff --git a/src/runtime.cc b/src/runtime.cc |
index 1f52a225de9ceee3a4cefc1d0e1d1e8b785da2e4..995b1cccf09e6570652f94eda27883e92dbf6ba1 100644 |
--- a/src/runtime.cc |
+++ b/src/runtime.cc |
@@ -7921,8 +7921,9 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewClosure) { |
} |
-static SmartArrayPointer<Object**> GetNonBoundArguments(int bound_argc, |
- int* total_argc) { |
+static SmartArrayPointer<Handle<Object> > GetNonBoundArguments( |
+ int bound_argc, |
+ int* total_argc) { |
// Find frame containing arguments passed to the caller. |
JavaScriptFrameIterator it; |
JavaScriptFrame* frame = it.frame(); |
@@ -7938,10 +7939,11 @@ static SmartArrayPointer<Object**> GetNonBoundArguments(int bound_argc, |
&args_slots); |
*total_argc = bound_argc + args_count; |
- SmartArrayPointer<Object**> param_data(NewArray<Object**>(*total_argc)); |
+ SmartArrayPointer<Handle<Object> > param_data( |
+ NewArray<Handle<Object> >(*total_argc)); |
for (int i = 0; i < args_count; i++) { |
Handle<Object> val = args_slots[i].GetValue(); |
- param_data[bound_argc + i] = val.location(); |
+ param_data[bound_argc + i] = val; |
} |
return param_data; |
} else { |
@@ -7950,10 +7952,11 @@ static SmartArrayPointer<Object**> GetNonBoundArguments(int bound_argc, |
int args_count = frame->ComputeParametersCount(); |
*total_argc = bound_argc + args_count; |
- SmartArrayPointer<Object**> param_data(NewArray<Object**>(*total_argc)); |
+ SmartArrayPointer<Handle<Object> > param_data( |
+ NewArray<Handle<Object> >(*total_argc)); |
for (int i = 0; i < args_count; i++) { |
Handle<Object> val = Handle<Object>(frame->GetParameter(i)); |
- param_data[bound_argc + i] = val.location(); |
+ param_data[bound_argc + i] = val; |
} |
return param_data; |
} |
@@ -7977,11 +7980,11 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewObjectFromBound) { |
} |
int total_argc = 0; |
- SmartArrayPointer<Object**> param_data = |
+ SmartArrayPointer<Handle<Object> > param_data = |
GetNonBoundArguments(bound_argc, &total_argc); |
for (int i = 0; i < bound_argc; i++) { |
Handle<Object> val = Handle<Object>(bound_args->get(i)); |
- param_data[i] = val.location(); |
+ param_data[i] = val; |
} |
bool exception = false; |
@@ -8458,8 +8461,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_Apply) { |
bool threw; |
Handle<JSReceiver> hfun(fun); |
Handle<Object> hreceiver(receiver); |
- Handle<Object> result = Execution::Call( |
- hfun, hreceiver, argc, reinterpret_cast<Object***>(argv), &threw, true); |
+ Handle<Object> result = |
+ Execution::Call(hfun, hreceiver, argc, argv, &threw, true); |
if (threw) return Failure::Exception(); |
return *result; |
@@ -11849,12 +11852,13 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugEvaluate) { |
&sinfo, function_context); |
// Invoke the evaluation function and return the result. |
- const int argc = 2; |
- Object** argv[argc] = { arguments.location(), |
- Handle<Object>::cast(source).location() }; |
+ Handle<Object> argv[] = { arguments, source }; |
Handle<Object> result = |
- Execution::Call(Handle<JSFunction>::cast(evaluation_function), receiver, |
- argc, argv, &has_pending_exception); |
+ Execution::Call(Handle<JSFunction>::cast(evaluation_function), |
+ receiver, |
+ ARRAY_SIZE(argv), |
+ argv, |
+ &has_pending_exception); |
if (has_pending_exception) return Failure::Exception(); |
// Skip the global proxy as it has no properties and always delegates to the |
@@ -12989,11 +12993,11 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetFromCache) { |
// TODO(antonm): consider passing a receiver when constructing a cache. |
Handle<Object> receiver(isolate->global_context()->global()); |
// This handle is nor shared, nor used later, so it's safe. |
- Object** argv[] = { key_handle.location() }; |
+ Handle<Object> argv[] = { key_handle }; |
bool pending_exception; |
value = Execution::Call(factory, |
receiver, |
- 1, |
+ ARRAY_SIZE(argv), |
argv, |
&pending_exception); |
if (pending_exception) return Failure::Exception(); |