| Index: runtime/vm/kernel_binary.cc
|
| diff --git a/runtime/vm/kernel_binary.cc b/runtime/vm/kernel_binary.cc
|
| index a870dd920ccab24cbe0adef4e8ccb9b67a0b34b4..350690d6b474d252ce97590143f3066a0ecbae9f 100644
|
| --- a/runtime/vm/kernel_binary.cc
|
| +++ b/runtime/vm/kernel_binary.cc
|
| @@ -355,13 +355,6 @@ class Reader {
|
| }
|
| }
|
|
|
| - TokenPosition ReadPosition() {
|
| - intptr_t value = ReadUInt();
|
| - // Position is saved as unsigned,
|
| - // but actually ranges from -1 and up (thus the -1)
|
| - return TokenPosition(value - 1);
|
| - }
|
| -
|
| intptr_t ReadListLength() { return ReadUInt(); }
|
|
|
| uint8_t ReadByte() { return buffer_[offset_++]; }
|
| @@ -557,11 +550,6 @@ class Writer {
|
| offset_ += length;
|
| }
|
|
|
| - void WritePosition(TokenPosition position) {
|
| - intptr_t value = position.value() + 1;
|
| - WriteUInt(value);
|
| - }
|
| -
|
| template <typename T>
|
| void WriteOptional(T* object) {
|
| if (object == NULL) {
|
| @@ -806,8 +794,8 @@ void StringTable::WriteTo(Writer* writer) {
|
| }
|
|
|
|
|
| -void LineStartingTable::ReadFrom(Reader* reader) {
|
| - size_ = reader->helper()->program()->source_uri_table().strings().length();
|
| +void LineStartingTable::ReadFrom(Reader* reader, intptr_t length) {
|
| + size_ = length;
|
| values_ = new intptr_t*[size_];
|
| for (intptr_t i = 0; i < size_; ++i) {
|
| intptr_t line_count = reader->ReadUInt();
|
| @@ -815,9 +803,9 @@ void LineStartingTable::ReadFrom(Reader* reader) {
|
| line_starts[0] = line_count;
|
| intptr_t previous_line_start = 0;
|
| for (intptr_t j = 0; j < line_count; ++j) {
|
| - intptr_t line_start = reader->ReadUInt() + previous_line_start;
|
| - line_starts[j + 1] = line_start;
|
| - previous_line_start = line_start;
|
| + intptr_t lineStart = reader->ReadUInt() + previous_line_start;
|
| + line_starts[j + 1] = lineStart;
|
| + previous_line_start = lineStart;
|
| }
|
| values_[i] = line_starts;
|
| }
|
| @@ -846,7 +834,7 @@ Library* Library::ReadFrom(Reader* reader) {
|
| ASSERT(flags == 0); // external libraries not supported
|
| name_ = Reference::ReadStringFrom(reader);
|
| import_uri_ = Reference::ReadStringFrom(reader);
|
| - source_uri_index_ = reader->ReadUInt();
|
| + reader->ReadUInt();
|
|
|
| int num_classes = reader->ReadUInt();
|
| classes().EnsureInitialized(num_classes);
|
| @@ -872,7 +860,7 @@ void Library::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| name_->WriteTo(writer);
|
| import_uri_->WriteTo(writer);
|
| - writer->WriteUInt(source_uri_index_);
|
| + writer->WriteUInt(0);
|
|
|
| writer->WriteUInt(classes_.length());
|
| for (int i = 0; i < classes_.length(); i++) {
|
| @@ -895,7 +883,7 @@ Class* Class::ReadFrom(Reader* reader) {
|
|
|
| is_abstract_ = reader->ReadBool();
|
| name_ = Reference::ReadStringFrom(reader);
|
| - source_uri_index_ = reader->ReadUInt();
|
| + reader->ReadUInt();
|
| annotations_.ReadFromStatic<Expression>(reader);
|
|
|
| return this;
|
| @@ -906,7 +894,7 @@ void Class::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteBool(is_abstract_);
|
| name_->WriteTo(writer);
|
| - writer->WriteUInt(source_uri_index_);
|
| + writer->WriteUInt(0);
|
| annotations_.WriteTo(writer);
|
| }
|
|
|
| @@ -1140,10 +1128,10 @@ Field* Field::ReadFrom(Reader* reader) {
|
| Tag tag = reader->ReadTag();
|
| ASSERT(tag == kField);
|
|
|
| - position_ = reader->ReadPosition();
|
| + reader->ReadUInt();
|
| flags_ = reader->ReadFlags();
|
| name_ = Name::ReadFrom(reader);
|
| - source_uri_index_ = reader->ReadUInt();
|
| + reader->ReadUInt();
|
| annotations_.ReadFromStatic<Expression>(reader);
|
| type_ = DartType::ReadFrom(reader);
|
| inferred_value_ = reader->ReadOptional<InferredValue>();
|
| @@ -1155,10 +1143,10 @@ Field* Field::ReadFrom(Reader* reader) {
|
| void Field::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(kField);
|
| - writer->WritePosition(position_);
|
| + writer->WriteUInt(0);
|
| writer->WriteFlags(flags_);
|
| name_->WriteTo(writer);
|
| - writer->WriteUInt(source_uri_index_);
|
| + writer->WriteUInt(0);
|
| annotations_.WriteTo(writer);
|
| type_->WriteTo(writer);
|
| writer->WriteOptional<InferredValue>(inferred_value_);
|
| @@ -1203,7 +1191,7 @@ Procedure* Procedure::ReadFrom(Reader* reader) {
|
| kind_ = static_cast<ProcedureKind>(reader->ReadByte());
|
| flags_ = reader->ReadFlags();
|
| name_ = Name::ReadFrom(reader);
|
| - source_uri_index_ = reader->ReadUInt();
|
| + reader->ReadUInt();
|
| annotations_.ReadFromStatic<Expression>(reader);
|
| function_ = reader->ReadOptional<FunctionNode>();
|
| return this;
|
| @@ -1218,7 +1206,7 @@ void Procedure::WriteTo(Writer* writer) {
|
| writer->WriteByte(kind_);
|
| writer->WriteFlags(flags_);
|
| name_->WriteTo(writer);
|
| - writer->WriteUInt(source_uri_index_);
|
| + writer->WriteUInt(0);
|
| annotations_.WriteTo(writer);
|
| writer->WriteOptional<FunctionNode>(function_);
|
| }
|
| @@ -1501,7 +1489,7 @@ void VariableSet::WriteTo(Writer* writer) {
|
| PropertyGet* PropertyGet::ReadFrom(Reader* reader) {
|
| TRACE_READ_OFFSET();
|
| PropertyGet* get = new PropertyGet();
|
| - get->position_ = reader->ReadPosition();
|
| + reader->ReadUInt();
|
| get->receiver_ = Expression::ReadFrom(reader);
|
| get->name_ = Name::ReadFrom(reader);
|
| get->interfaceTarget_ = Reference::ReadMemberFrom(reader, true);
|
| @@ -1512,7 +1500,7 @@ PropertyGet* PropertyGet::ReadFrom(Reader* reader) {
|
| void PropertyGet::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(kPropertyGet);
|
| - writer->WritePosition(position_);
|
| + writer->WriteUInt(0);
|
| receiver_->WriteTo(writer);
|
| name_->WriteTo(writer);
|
| Reference::WriteMemberTo(writer, interfaceTarget_, true);
|
| @@ -1522,7 +1510,7 @@ void PropertyGet::WriteTo(Writer* writer) {
|
| PropertySet* PropertySet::ReadFrom(Reader* reader) {
|
| TRACE_READ_OFFSET();
|
| PropertySet* set = new PropertySet();
|
| - set->position_ = reader->ReadPosition();
|
| + reader->ReadUInt();
|
| set->receiver_ = Expression::ReadFrom(reader);
|
| set->name_ = Name::ReadFrom(reader);
|
| set->value_ = Expression::ReadFrom(reader);
|
| @@ -1534,7 +1522,7 @@ PropertySet* PropertySet::ReadFrom(Reader* reader) {
|
| void PropertySet::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(kPropertySet);
|
| - writer->WritePosition(position_);
|
| + writer->WriteUInt(0);
|
| receiver_->WriteTo(writer);
|
| name_->WriteTo(writer);
|
| value_->WriteTo(writer);
|
| @@ -1581,7 +1569,7 @@ void DirectPropertySet::WriteTo(Writer* writer) {
|
| StaticGet* StaticGet::ReadFrom(Reader* reader) {
|
| TRACE_READ_OFFSET();
|
| StaticGet* get = new StaticGet();
|
| - get->position_ = reader->ReadPosition();
|
| + reader->ReadUInt();
|
| get->target_ = Reference::ReadMemberFrom(reader);
|
| return get;
|
| }
|
| @@ -1590,7 +1578,7 @@ StaticGet* StaticGet::ReadFrom(Reader* reader) {
|
| void StaticGet::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(kStaticGet);
|
| - writer->WritePosition(position_);
|
| + writer->WriteUInt(0);
|
| Reference::WriteMemberTo(writer, target_);
|
| }
|
|
|
| @@ -1648,7 +1636,7 @@ void NamedExpression::WriteTo(Writer* writer) {
|
| MethodInvocation* MethodInvocation::ReadFrom(Reader* reader) {
|
| TRACE_READ_OFFSET();
|
| MethodInvocation* invocation = new MethodInvocation();
|
| - invocation->position_ = reader->ReadPosition();
|
| + reader->ReadUInt();
|
| invocation->receiver_ = Expression::ReadFrom(reader);
|
| invocation->name_ = Name::ReadFrom(reader);
|
| invocation->arguments_ = Arguments::ReadFrom(reader);
|
| @@ -1660,7 +1648,7 @@ MethodInvocation* MethodInvocation::ReadFrom(Reader* reader) {
|
| void MethodInvocation::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(kMethodInvocation);
|
| - writer->WritePosition(position_);
|
| + writer->WriteUInt(0);
|
| receiver_->WriteTo(writer);
|
| name_->WriteTo(writer);
|
| arguments_->WriteTo(writer);
|
| @@ -1689,19 +1677,19 @@ void DirectMethodInvocation::WriteTo(Writer* writer) {
|
|
|
| StaticInvocation* StaticInvocation::ReadFrom(Reader* reader, bool is_const) {
|
| TRACE_READ_OFFSET();
|
| - StaticInvocation* invocation = new StaticInvocation();
|
| - invocation->is_const_ = is_const;
|
| - invocation->position_ = reader->ReadPosition();
|
| - invocation->procedure_ = Procedure::Cast(Reference::ReadMemberFrom(reader));
|
| - invocation->arguments_ = Arguments::ReadFrom(reader);
|
| - return invocation;
|
| +
|
| + reader->ReadUInt();
|
| + Member* member = Reference::ReadMemberFrom(reader);
|
| + Arguments* args = Arguments::ReadFrom(reader);
|
| +
|
| + return new StaticInvocation(Procedure::Cast(member), args, is_const);
|
| }
|
|
|
|
|
| void StaticInvocation::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(is_const_ ? kConstStaticInvocation : kStaticInvocation);
|
| - writer->WritePosition(position_);
|
| + writer->WriteUInt(0);
|
| Reference::WriteMemberTo(writer, procedure_);
|
| arguments_->WriteTo(writer);
|
| }
|
| @@ -1712,7 +1700,7 @@ ConstructorInvocation* ConstructorInvocation::ReadFrom(Reader* reader,
|
| TRACE_READ_OFFSET();
|
| ConstructorInvocation* invocation = new ConstructorInvocation();
|
| invocation->is_const_ = is_const;
|
| - invocation->position_ = reader->ReadPosition();
|
| + reader->ReadUInt();
|
| invocation->target_ = Constructor::Cast(Reference::ReadMemberFrom(reader));
|
| invocation->arguments_ = Arguments::ReadFrom(reader);
|
| return invocation;
|
| @@ -1723,7 +1711,7 @@ void ConstructorInvocation::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(is_const_ ? kConstConstructorInvocation
|
| : kConstructorInvocation);
|
| - writer->WritePosition(position_);
|
| + writer->WriteUInt(0);
|
| Reference::WriteMemberTo(writer, target_);
|
| arguments_->WriteTo(writer);
|
| }
|
| @@ -1986,7 +1974,7 @@ void Rethrow::WriteTo(Writer* writer) {
|
| Throw* Throw::ReadFrom(Reader* reader) {
|
| TRACE_READ_OFFSET();
|
| Throw* t = new Throw();
|
| - t->position_ = reader->ReadPosition();
|
| + reader->ReadUInt();
|
| t->expression_ = Expression::ReadFrom(reader);
|
| return t;
|
| }
|
| @@ -1995,7 +1983,7 @@ Throw* Throw::ReadFrom(Reader* reader) {
|
| void Throw::WriteTo(Writer* writer) {
|
| TRACE_WRITE_OFFSET();
|
| writer->WriteTag(kThrow);
|
| - writer->WritePosition(position_);
|
| + writer->WriteUInt(0);
|
| expression_->WriteTo(writer);
|
| }
|
|
|
| @@ -2805,8 +2793,10 @@ Program* Program::ReadFrom(Reader* reader) {
|
| reader->helper()->set_program(program);
|
|
|
| program->string_table_.ReadFrom(reader);
|
| - program->source_uri_table_.ReadFrom(reader);
|
| - program->line_starting_table_.ReadFrom(reader);
|
| + StringTable dummy1;
|
| + dummy1.ReadFrom(reader);
|
| + LineStartingTable dummy2;
|
| + dummy2.ReadFrom(reader, dummy1.strings_.length());
|
|
|
| int libraries = reader->ReadUInt();
|
| program->libraries().EnsureInitialized(libraries);
|
| @@ -2830,8 +2820,10 @@ void Program::WriteTo(Writer* writer) {
|
| // NOTE: Currently we don't GC strings and we require that all referenced
|
| // strings in nodes are present in [string_table_].
|
| string_table_.WriteTo(writer);
|
| - source_uri_table_.WriteTo(writer);
|
| - line_starting_table_.WriteTo(writer);
|
| + StringTable dummy1;
|
| + dummy1.WriteTo(writer);
|
| + LineStartingTable dummy2;
|
| + dummy2.WriteTo(writer);
|
|
|
| libraries_.WriteTo(writer);
|
| Reference::WriteMemberTo(writer, main_method_);
|
|
|