Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(590)

Unified Diff: src/objects.cc

Issue 2302783002: [modules] Basic support of exports (Closed)
Patch Set: . Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index db4d9b5a0cb544bb43f51a088e57eb69eef520d7..4db3fc27fbe4e4bb57109a8d4c0c69e0f2ee29fa 100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -19436,5 +19436,28 @@ bool JSReceiver::HasProxyInPrototype(Isolate* isolate) {
return false;
}
+void JSModule::CreateExport(Handle<JSModule> module, Handle<String> name) {
+ Isolate* isolate = module->GetIsolate();
+ Handle<Cell> cell =
+ isolate->factory()->NewCell(isolate->factory()->undefined_value());
+ LookupIterator it(module, name);
+ JSObject::CreateDataProperty(&it, cell, Object::THROW_ON_ERROR).ToChecked();
+}
+
+void JSModule::StoreExport(Handle<JSModule> module, Handle<String> name,
+ Handle<Object> value) {
+ LookupIterator it(module, name);
+ Handle<Cell> cell = Handle<Cell>::cast(JSObject::GetDataProperty(&it));
+ cell->set_value(*value);
+}
+
+Handle<Object> JSModule::LoadExport(Handle<JSModule> module,
+ Handle<String> name) {
+ Isolate* isolate = module->GetIsolate();
+ LookupIterator it(module, name);
+ Handle<Cell> cell = Handle<Cell>::cast(JSObject::GetDataProperty(&it));
+ return handle(cell->value(), isolate);
+}
+
} // namespace internal
} // namespace v8

Powered by Google App Engine
This is Rietveld 408576698