summaryrefslogtreecommitdiff
path: root/deps/v8/src/property-descriptor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/property-descriptor.cc')
-rw-r--r--deps/v8/src/property-descriptor.cc36
1 files changed, 18 insertions, 18 deletions
diff --git a/deps/v8/src/property-descriptor.cc b/deps/v8/src/property-descriptor.cc
index d2a7b6695e..3fdd39287b 100644
--- a/deps/v8/src/property-descriptor.cc
+++ b/deps/v8/src/property-descriptor.cc
@@ -57,7 +57,7 @@ bool ToPropertyDescriptorFastPath(Isolate* isolate, Handle<JSReceiver> obj,
// TODO(jkummerow): support dictionary properties?
if (map->is_dictionary_map()) return false;
Handle<DescriptorArray> descs =
- Handle<DescriptorArray>(map->instance_descriptors());
+ Handle<DescriptorArray>(map->instance_descriptors(), isolate);
for (int i = 0; i < map->NumberOfOwnDescriptors(); i++) {
PropertyDetails details = descs->GetDetails(i);
Name* key = descs->GetKey(i);
@@ -76,27 +76,27 @@ bool ToPropertyDescriptorFastPath(Isolate* isolate, Handle<JSReceiver> obj,
} else {
DCHECK_EQ(kDescriptor, details.location());
if (details.kind() == kData) {
- value = handle(descs->GetValue(i), isolate);
+ value = handle(descs->GetStrongValue(i), isolate);
} else {
DCHECK_EQ(kAccessor, details.kind());
// Bail out to slow path.
return false;
}
}
- Heap* heap = isolate->heap();
- if (key == heap->enumerable_string()) {
- desc->set_enumerable(value->BooleanValue());
- } else if (key == heap->configurable_string()) {
- desc->set_configurable(value->BooleanValue());
- } else if (key == heap->value_string()) {
+ ReadOnlyRoots roots(isolate);
+ if (key == roots.enumerable_string()) {
+ desc->set_enumerable(value->BooleanValue(isolate));
+ } else if (key == roots.configurable_string()) {
+ desc->set_configurable(value->BooleanValue(isolate));
+ } else if (key == roots.value_string()) {
desc->set_value(value);
- } else if (key == heap->writable_string()) {
- desc->set_writable(value->BooleanValue());
- } else if (key == heap->get_string()) {
+ } else if (key == roots.writable_string()) {
+ desc->set_writable(value->BooleanValue(isolate));
+ } else if (key == roots.get_string()) {
// Bail out to slow path to throw an exception if necessary.
if (!value->IsCallable()) return false;
desc->set_get(value);
- } else if (key == heap->set_string()) {
+ } else if (key == roots.set_string()) {
// Bail out to slow path to throw an exception if necessary.
if (!value->IsCallable()) return false;
desc->set_set(value);
@@ -212,7 +212,7 @@ bool PropertyDescriptor::ToPropertyDescriptor(Isolate* isolate,
}
// 6c. Set the [[Enumerable]] field of desc to enum.
if (!enumerable.is_null()) {
- desc->set_enumerable(enumerable->BooleanValue());
+ desc->set_enumerable(enumerable->BooleanValue(isolate));
}
// configurable?
@@ -224,7 +224,7 @@ bool PropertyDescriptor::ToPropertyDescriptor(Isolate* isolate,
}
// 9c. Set the [[Configurable]] field of desc to conf.
if (!configurable.is_null()) {
- desc->set_configurable(configurable->BooleanValue());
+ desc->set_configurable(configurable->BooleanValue(isolate));
}
// value?
@@ -245,7 +245,7 @@ bool PropertyDescriptor::ToPropertyDescriptor(Isolate* isolate,
return false;
}
// 15c. Set the [[Writable]] field of desc to writable.
- if (!writable.is_null()) desc->set_writable(writable->BooleanValue());
+ if (!writable.is_null()) desc->set_writable(writable->BooleanValue(isolate));
// getter?
Handle<Object> getter;
@@ -361,11 +361,11 @@ Handle<PropertyDescriptorObject> PropertyDescriptor::ToPropertyDescriptorObject(
obj->set(PropertyDescriptorObject::kFlagsIndex, Smi::FromInt(flags));
obj->set(PropertyDescriptorObject::kValueIndex,
- has_value() ? *value_ : isolate->heap()->the_hole_value());
+ has_value() ? *value_ : ReadOnlyRoots(isolate).the_hole_value());
obj->set(PropertyDescriptorObject::kGetIndex,
- has_get() ? *get_ : isolate->heap()->the_hole_value());
+ has_get() ? *get_ : ReadOnlyRoots(isolate).the_hole_value());
obj->set(PropertyDescriptorObject::kSetIndex,
- has_set() ? *set_ : isolate->heap()->the_hole_value());
+ has_set() ? *set_ : ReadOnlyRoots(isolate).the_hole_value());
return obj;
}