| Index: src/runtime.cc
|
| diff --git a/src/runtime.cc b/src/runtime.cc
|
| index 446443148dcf219323317ec5ab40aefd29598706..eb565e4d7a02a8febf4a373f3874dcfc249e7ac3 100644
|
| --- a/src/runtime.cc
|
| +++ b/src/runtime.cc
|
| @@ -137,8 +137,9 @@ namespace internal {
|
| static_cast<LanguageMode>(args.smi_at(index));
|
|
|
|
|
| -MUST_USE_RESULT static MaybeObject* DeepCopyBoilerplate(Isolate* isolate,
|
| - JSObject* boilerplate) {
|
| +MUST_USE_RESULT static MaybeObject* DeepCopyBoilerplateInternal(
|
| + Isolate* isolate,
|
| + JSObject* boilerplate) {
|
| StackLimitCheck check(isolate);
|
| if (check.HasOverflowed()) return isolate->StackOverflow();
|
|
|
| @@ -156,7 +157,8 @@ MUST_USE_RESULT static MaybeObject* DeepCopyBoilerplate(Isolate* isolate,
|
| Object* value = properties->get(i);
|
| if (value->IsJSObject()) {
|
| JSObject* js_object = JSObject::cast(value);
|
| - { MaybeObject* maybe_result = DeepCopyBoilerplate(isolate, js_object);
|
| + { MaybeObject* maybe_result = DeepCopyBoilerplateInternal(
|
| + isolate, js_object);
|
| if (!maybe_result->ToObject(&result)) return maybe_result;
|
| }
|
| properties->set(i, result);
|
| @@ -167,7 +169,8 @@ MUST_USE_RESULT static MaybeObject* DeepCopyBoilerplate(Isolate* isolate,
|
| Object* value = copy->InObjectPropertyAt(i);
|
| if (value->IsJSObject()) {
|
| JSObject* js_object = JSObject::cast(value);
|
| - { MaybeObject* maybe_result = DeepCopyBoilerplate(isolate, js_object);
|
| + { MaybeObject* maybe_result = DeepCopyBoilerplateInternal(
|
| + isolate, js_object);
|
| if (!maybe_result->ToObject(&result)) return maybe_result;
|
| }
|
| copy->InObjectPropertyAtPut(i, result);
|
| @@ -193,7 +196,8 @@ MUST_USE_RESULT static MaybeObject* DeepCopyBoilerplate(Isolate* isolate,
|
| copy->GetProperty(key_string, &attributes)->ToObjectUnchecked();
|
| if (value->IsJSObject()) {
|
| JSObject* js_object = JSObject::cast(value);
|
| - { MaybeObject* maybe_result = DeepCopyBoilerplate(isolate, js_object);
|
| + { MaybeObject* maybe_result = DeepCopyBoilerplateInternal(
|
| + isolate, js_object);
|
| if (!maybe_result->ToObject(&result)) return maybe_result;
|
| }
|
| { MaybeObject* maybe_result =
|
| @@ -229,7 +233,7 @@ MUST_USE_RESULT static MaybeObject* DeepCopyBoilerplate(Isolate* isolate,
|
| (IsFastObjectElementsKind(copy->GetElementsKind())));
|
| if (value->IsJSObject()) {
|
| JSObject* js_object = JSObject::cast(value);
|
| - { MaybeObject* maybe_result = DeepCopyBoilerplate(isolate,
|
| + { MaybeObject* maybe_result = DeepCopyBoilerplateInternal(isolate,
|
| js_object);
|
| if (!maybe_result->ToObject(&result)) return maybe_result;
|
| }
|
| @@ -248,7 +252,7 @@ MUST_USE_RESULT static MaybeObject* DeepCopyBoilerplate(Isolate* isolate,
|
| Object* value = element_dictionary->ValueAt(i);
|
| if (value->IsJSObject()) {
|
| JSObject* js_object = JSObject::cast(value);
|
| - { MaybeObject* maybe_result = DeepCopyBoilerplate(isolate,
|
| + { MaybeObject* maybe_result = DeepCopyBoilerplateInternal(isolate,
|
| js_object);
|
| if (!maybe_result->ToObject(&result)) return maybe_result;
|
| }
|
| @@ -279,6 +283,15 @@ MUST_USE_RESULT static MaybeObject* DeepCopyBoilerplate(Isolate* isolate,
|
| }
|
|
|
|
|
| +Handle<JSObject> Runtime::DeepCopyBoilerplate(Isolate* isolate,
|
| + Handle<JSObject> boilerplate) {
|
| + // MaybeObject* mo = DeepCopyBoilerplateInternal(isolate, *boilerplate);
|
| + CALL_HEAP_FUNCTION(isolate,
|
| + DeepCopyBoilerplateInternal(isolate, *boilerplate),
|
| + JSObject);
|
| +}
|
| +
|
| +
|
| static Handle<Map> ComputeObjectLiteralMap(
|
| Handle<Context> context,
|
| Handle<FixedArray> constant_properties,
|
| @@ -596,7 +609,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateObjectLiteral) {
|
| // Update the functions literal and return the boilerplate.
|
| literals->set(literals_index, *boilerplate);
|
| }
|
| - return DeepCopyBoilerplate(isolate, JSObject::cast(*boilerplate));
|
| + return DeepCopyBoilerplateInternal(isolate, JSObject::cast(*boilerplate));
|
| }
|
|
|
|
|
| @@ -643,7 +656,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateArrayLiteral) {
|
| // Update the functions literal and return the boilerplate.
|
| literals->set(literals_index, *boilerplate);
|
| }
|
| - return DeepCopyBoilerplate(isolate, JSObject::cast(*boilerplate));
|
| + return DeepCopyBoilerplateInternal(isolate, JSObject::cast(*boilerplate));
|
| }
|
|
|
|
|
|
|