summaryrefslogtreecommitdiff
path: root/deps/v8/src/objects/module.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/objects/module.cc')
-rw-r--r--deps/v8/src/objects/module.cc23
1 files changed, 23 insertions, 0 deletions
diff --git a/deps/v8/src/objects/module.cc b/deps/v8/src/objects/module.cc
index b9d7697fb5..e2472616f6 100644
--- a/deps/v8/src/objects/module.cc
+++ b/deps/v8/src/objects/module.cc
@@ -900,5 +900,28 @@ MaybeHandle<Object> JSModuleNamespace::GetExport(Handle<String> name) {
return value;
}
+Maybe<PropertyAttributes> JSModuleNamespace::GetPropertyAttributes(
+ LookupIterator* it) {
+ Handle<JSModuleNamespace> object = it->GetHolder<JSModuleNamespace>();
+ Handle<String> name = Handle<String>::cast(it->GetName());
+ DCHECK_EQ(it->state(), LookupIterator::ACCESSOR);
+
+ Isolate* isolate = name->GetIsolate();
+
+ Handle<Object> lookup(object->module()->exports()->Lookup(name), isolate);
+ if (lookup->IsTheHole(isolate)) {
+ return Just(ABSENT);
+ }
+
+ Handle<Object> value(Handle<Cell>::cast(lookup)->value(), isolate);
+ if (value->IsTheHole(isolate)) {
+ isolate->Throw(*isolate->factory()->NewReferenceError(
+ MessageTemplate::kNotDefined, name));
+ return Nothing<PropertyAttributes>();
+ }
+
+ return Just(it->property_attributes());
+}
+
} // namespace internal
} // namespace v8