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

Unified Diff: runtime/vm/kernel_binary.cc

Issue 2852373002: Add import/export declaration AST node boilerplate to kernel. (Closed)
Patch Set: Merge and adapt C++ code to upstream changes Created 3 years, 7 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
« no previous file with comments | « runtime/vm/kernel.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/kernel_binary.cc
diff --git a/runtime/vm/kernel_binary.cc b/runtime/vm/kernel_binary.cc
index 220355deebc327ddd04a3269cca27296af7d895b..a494bc38e20968df9f3e240a03787e2271a3632a 100644
--- a/runtime/vm/kernel_binary.cc
+++ b/runtime/vm/kernel_binary.cc
@@ -74,6 +74,7 @@ void List<T>::ReadFromStatic(Reader* reader) {
}
}
+
void TypeParameterList::ReadFrom(Reader* reader) {
// It is possible for the bound of the first type parameter to refer to
// the second type parameter. This means we need to create [TypeParameter]
@@ -181,10 +182,7 @@ Library* Library::ReadFrom(Reader* reader) {
source_uri_index_ = reader->ReadUInt();
reader->set_current_script_id(source_uri_index_);
- int num_imports = reader->ReadUInt();
- if (num_imports != 0) {
- FATAL("Deferred imports not implemented in VM");
- }
+ dependencies().ReadFromStatic<LibraryDependency>(reader);
int num_typedefs = reader->ReadUInt();
typedefs().EnsureInitialized(num_typedefs);
for (intptr_t i = 0; i < num_typedefs; i++) {
@@ -209,6 +207,35 @@ Library* Library::ReadFrom(Reader* reader) {
}
+LibraryDependency* LibraryDependency::ReadFrom(Reader* reader) {
+ TRACE_READ_OFFSET();
+
+ LibraryDependency* node = new LibraryDependency();
+ node->flags_ = reader->ReadFlags();
+ node->annotations_.ReadFromStatic<Expression>(reader);
+ node->target_reference_ = Reference::ReadLibraryFrom(reader);
+ node->name_index_ = StringIndex(reader->ReadUInt());
+ node->combinators_.ReadFromStatic<Combinator>(reader);
+
+ return node;
+}
+
+
+Combinator* Combinator::ReadFrom(Reader* reader) {
+ TRACE_READ_OFFSET();
+
+ Combinator* node = new Combinator();
+ node->is_show_ = (reader->ReadByte() == 1);
+ int num_names = reader->ReadUInt();
+ node->name_indices_.Initialize(num_names);
+ for (intptr_t i = 0; i < num_names; ++i) {
+ node->name_indices_[i] = reader->ReadUInt();
+ }
+
+ return node;
+}
+
+
Typedef* Typedef::ReadFrom(Reader* reader) {
TRACE_READ_OFFSET();
@@ -312,6 +339,16 @@ NameIndex Reference::ReadTypedefFrom(Reader* reader) {
}
+NameIndex Reference::ReadLibraryFrom(Reader* reader) {
+ TRACE_READ_OFFSET();
+ NameIndex canonical_name = reader->ReadCanonicalNameReference();
+ if (canonical_name == -1) {
+ FATAL("Expected a valid typedef reference, but got `null`");
+ }
+ return canonical_name;
+}
+
+
Field* Field::ReadFrom(Reader* reader) {
TRACE_READ_OFFSET();
kernel_offset_ = reader->offset(); // Notice the ReadTag() below.
« no previous file with comments | « runtime/vm/kernel.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698