Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index abf64dc7a4db8a212c5fc2dc39873aa79eba2296..666320a50adfec3c024636ae0697674b80f194e7 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -1678,6 +1678,7 @@ MaybeObject* JSObject::AddProperty(String* name, |
ASSERT(!IsJSGlobalProxy()); |
Map* map_of_this = map(); |
Heap* heap = GetHeap(); |
+ Isolate* isolate = heap->isolate(); |
MaybeObject* result; |
if (extensibility_check == PERFORM_EXTENSIBILITY_CHECK && |
!map_of_this->is_extensible()) { |
@@ -1685,7 +1686,7 @@ MaybeObject* JSObject::AddProperty(String* name, |
return value; |
} else { |
Handle<Object> args[1] = {Handle<String>(name)}; |
- return heap->isolate()->Throw( |
+ return isolate->Throw( |
*FACTORY->NewTypeError("object_not_extensible", |
HandleVector(args, 1))); |
} |
@@ -1715,11 +1716,13 @@ MaybeObject* JSObject::AddProperty(String* name, |
} |
Handle<Object> hresult; |
- if (!result->ToHandle(&hresult)) return result; |
+ if (!result->ToHandle(&hresult, isolate)) return result; |
if (FLAG_harmony_observation && map()->is_observed()) { |
- EnqueueChangeRecord(handle(this), "new", handle(name), |
- handle(heap->the_hole_value())); |
+ EnqueueChangeRecord(handle(this, isolate), |
+ "new", |
+ handle(name, isolate), |
+ handle(heap->the_hole_value(), isolate)); |
} |
return *hresult; |
@@ -2855,6 +2858,7 @@ MaybeObject* JSObject::SetPropertyForResult(LookupResult* lookup, |
StrictModeFlag strict_mode, |
StoreFromKeyed store_mode) { |
Heap* heap = GetHeap(); |
+ Isolate* isolate = heap->isolate(); |
// Make sure that the top context does not change when doing callbacks or |
// interceptor calls. |
AssertNoContextChange ncc; |
@@ -2873,7 +2877,7 @@ MaybeObject* JSObject::SetPropertyForResult(LookupResult* lookup, |
// Check access rights if needed. |
if (IsAccessCheckNeeded()) { |
- if (!heap->isolate()->MayNamedAccess(this, name_raw, v8::ACCESS_SET)) { |
+ if (!isolate->MayNamedAccess(this, name_raw, v8::ACCESS_SET)) { |
return SetPropertyWithFailedAccessCheck( |
lookup, name_raw, value_raw, true, strict_mode); |
} |
@@ -2889,10 +2893,10 @@ MaybeObject* JSObject::SetPropertyForResult(LookupResult* lookup, |
// From this point on everything needs to be handlified, because |
// SetPropertyViaPrototypes might call back into JavaScript. |
- HandleScope scope(GetIsolate()); |
+ HandleScope scope(isolate); |
Handle<JSObject> self(this); |
Handle<String> name(name_raw); |
- Handle<Object> value(value_raw); |
+ Handle<Object> value(value_raw, isolate); |
if (!lookup->IsProperty() && !self->IsJSContextExtensionObject()) { |
bool done = false; |
@@ -2910,16 +2914,16 @@ MaybeObject* JSObject::SetPropertyForResult(LookupResult* lookup, |
if (lookup->IsProperty() && lookup->IsReadOnly()) { |
if (strict_mode == kStrictMode) { |
Handle<Object> args[] = { name, self }; |
- return heap->isolate()->Throw(*heap->isolate()->factory()->NewTypeError( |
+ return isolate->Throw(*isolate->factory()->NewTypeError( |
"strict_read_only_property", HandleVector(args, ARRAY_SIZE(args)))); |
} else { |
return *value; |
} |
} |
- Handle<Object> old_value(heap->the_hole_value()); |
+ Handle<Object> old_value(heap->the_hole_value(), isolate); |
if (FLAG_harmony_observation && map()->is_observed()) { |
- old_value = handle(lookup->GetLazyValue()); |
+ old_value = handle(lookup->GetLazyValue(), isolate); |
} |
// This is a real property that is not read-only, or it is a |
@@ -2997,13 +3001,13 @@ MaybeObject* JSObject::SetPropertyForResult(LookupResult* lookup, |
} |
Handle<Object> hresult; |
- if (!result->ToHandle(&hresult)) return result; |
+ if (!result->ToHandle(&hresult, isolate)) return result; |
if (FLAG_harmony_observation && map()->is_observed()) { |
if (lookup->IsTransition()) { |
EnqueueChangeRecord(self, "new", name, old_value); |
} else { |
- LookupResult new_lookup(self->GetIsolate()); |
+ LookupResult new_lookup(isolate); |
self->LocalLookup(*name, &new_lookup); |
ASSERT(!new_lookup.GetLazyValue()->IsTheHole()); |
if (!new_lookup.GetLazyValue()->SameValue(*old_value)) { |
@@ -3076,15 +3080,15 @@ MaybeObject* JSObject::SetLocalPropertyIgnoreAttributes( |
} |
// From this point on everything needs to be handlified. |
- HandleScope scope(GetIsolate()); |
+ HandleScope scope(isolate); |
Handle<JSObject> self(this); |
Handle<String> name(name_raw); |
- Handle<Object> value(value_raw); |
+ Handle<Object> value(value_raw, isolate); |
- Handle<Object> old_value(isolate->heap()->the_hole_value()); |
+ Handle<Object> old_value(isolate->heap()->the_hole_value(), isolate); |
PropertyAttributes old_attributes = ABSENT; |
if (FLAG_harmony_observation && map()->is_observed()) { |
- old_value = handle(lookup.GetLazyValue()); |
+ old_value = handle(lookup.GetLazyValue(), isolate); |
old_attributes = lookup.GetAttributes(); |
} |
@@ -3146,7 +3150,7 @@ MaybeObject* JSObject::SetLocalPropertyIgnoreAttributes( |
} |
Handle<Object> hresult; |
- if (!result->ToHandle(&hresult)) return result; |
+ if (!result->ToHandle(&hresult, isolate)) return result; |
if (FLAG_harmony_observation && map()->is_observed()) { |
if (lookup.IsTransition()) { |
@@ -4153,7 +4157,7 @@ MaybeObject* JSObject::DeleteElement(uint32_t index, DeleteMode mode) { |
} |
Handle<Object> hresult; |
- if (!result->ToHandle(&hresult)) return result; |
+ if (!result->ToHandle(&hresult, isolate)) return result; |
if (FLAG_harmony_observation && map()->is_observed()) { |
if (preexists && !self->HasLocalElement(index)) |
@@ -4218,7 +4222,7 @@ MaybeObject* JSObject::DeleteProperty(String* name, DeleteMode mode) { |
Handle<Object> old_value(isolate->heap()->the_hole_value()); |
if (FLAG_harmony_observation && map()->is_observed()) { |
- old_value = handle(lookup.GetLazyValue()); |
+ old_value = handle(lookup.GetLazyValue(), isolate); |
} |
MaybeObject* result; |
@@ -4240,7 +4244,7 @@ MaybeObject* JSObject::DeleteProperty(String* name, DeleteMode mode) { |
} |
Handle<Object> hresult; |
- if (!result->ToHandle(&hresult)) return result; |
+ if (!result->ToHandle(&hresult, isolate)) return result; |
if (FLAG_harmony_observation && map()->is_observed()) { |
if (!self->HasLocalProperty(*hname)) |
@@ -4878,7 +4882,7 @@ MaybeObject* JSObject::DefineAccessor(String* name_raw, |
if (!CanSetCallback(name_raw)) return isolate->heap()->undefined_value(); |
// From this point on everything needs to be handlified. |
- HandleScope scope(GetIsolate()); |
+ HandleScope scope(isolate); |
Handle<JSObject> self(this); |
Handle<String> name(name_raw); |
Handle<Object> getter(getter_raw); |
@@ -4899,7 +4903,7 @@ MaybeObject* JSObject::DefineAccessor(String* name_raw, |
LookupResult lookup(isolate); |
LocalLookup(*name, &lookup); |
preexists = lookup.IsProperty(); |
- if (preexists) old_value = handle(lookup.GetLazyValue()); |
+ if (preexists) old_value = handle(lookup.GetLazyValue(), isolate); |
} |
} |
@@ -4908,7 +4912,7 @@ MaybeObject* JSObject::DefineAccessor(String* name_raw, |
self->DefinePropertyAccessor(*name, *getter, *setter, attributes); |
Handle<Object> hresult; |
- if (!result->ToHandle(&hresult)) return result; |
+ if (!result->ToHandle(&hresult, isolate)) return result; |
if (FLAG_harmony_observation && map()->is_observed()) { |
const char* type = preexists ? "reconfigured" : "new"; |
@@ -9414,7 +9418,7 @@ MaybeObject* JSArray::SetElementsLength(Object* len) { |
MaybeObject* result = |
self->GetElementsAccessor()->SetLength(*self, *new_length_handle); |
Handle<Object> hresult; |
- if (!result->ToHandle(&hresult)) return result; |
+ if (!result->ToHandle(&hresult, isolate)) return result; |
CHECK(self->length()->ToArrayIndex(&new_length)); |
if (old_length != new_length) { |
@@ -10375,7 +10379,7 @@ MaybeObject* JSObject::SetElement(uint32_t index, |
// Don't allow element properties to be redefined for external arrays. |
if (HasExternalArrayElements() && set_mode == DEFINE_PROPERTY) { |
Handle<Object> number = isolate->factory()->NewNumberFromUint(index); |
- Handle<Object> args[] = { handle(this), number }; |
+ Handle<Object> args[] = { handle(this, isolate), number }; |
Handle<Object> error = isolate->factory()->NewTypeError( |
"redef_external_array_element", HandleVector(args, ARRAY_SIZE(args))); |
return isolate->Throw(*error); |
@@ -10410,7 +10414,7 @@ MaybeObject* JSObject::SetElement(uint32_t index, |
old_value = Object::GetElement(self, index); |
} else if (self->IsJSArray()) { |
// Store old array length in case adding an element grows the array. |
- old_length = handle(Handle<JSArray>::cast(self)->length()); |
+ old_length = handle(Handle<JSArray>::cast(self)->length(), isolate); |
} |
// Check for lookup interceptor |
@@ -10421,7 +10425,7 @@ MaybeObject* JSObject::SetElement(uint32_t index, |
index, *value, attributes, strict_mode, check_prototype, set_mode); |
Handle<Object> hresult; |
- if (!result->ToHandle(&hresult)) return result; |
+ if (!result->ToHandle(&hresult, isolate)) return result; |
Handle<String> name = isolate->factory()->Uint32ToString(index); |
PropertyAttributes new_attributes = self->GetLocalElementAttribute(index); |