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

Side by Side Diff: runtime/vm/kernel_binary.cc

Issue 2790073004: Restructure the Kernel string table. (Closed)
Patch Set: Incorporate review comments. Created 3 years, 8 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 unified diff | Download patch
« no previous file with comments | « runtime/vm/kernel.h ('k') | runtime/vm/kernel_binary_flowgraph.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 #if !defined(DART_PRECOMPILED_RUNTIME) 4 #if !defined(DART_PRECOMPILED_RUNTIME)
5 5
6 #include "vm/kernel_binary.h" 6 #include "vm/kernel_binary.h"
7 #include "platform/globals.h" 7 #include "platform/globals.h"
8 #include "vm/flags.h" 8 #include "vm/flags.h"
9 #include "vm/growable_array.h" 9 #include "vm/growable_array.h"
10 #include "vm/kernel.h" 10 #include "vm/kernel.h"
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 125
126 126
127 String* String::ReadFrom(Reader* reader) { 127 String* String::ReadFrom(Reader* reader) {
128 TRACE_READ_OFFSET(); 128 TRACE_READ_OFFSET();
129 return Reference::ReadStringFrom(reader); 129 return Reference::ReadStringFrom(reader);
130 } 130 }
131 131
132 132
133 String* String::ReadFromImpl(Reader* reader) { 133 String* String::ReadFromImpl(Reader* reader) {
134 TRACE_READ_OFFSET(); 134 TRACE_READ_OFFSET();
135 uint32_t bytes = reader->ReadUInt(); 135 intptr_t size = reader->ReadUInt();
136 return new String(reader->Consume(bytes), bytes); 136 return ReadRaw(reader, size);
137 }
138
139 void StringTable::ReadFrom(Reader* reader) {
140 strings_.ReadFromStatic<StringImpl>(reader);
141 } 137 }
142 138
143 139
140 String* String::ReadRaw(Reader* reader, intptr_t size) {
141 return new String(reader->Consume(size), size);
142 }
143
144
145 void StringTable::ReadFrom(Reader* reader) {
146 TRACE_READ_OFFSET();
147 // Read the table of end offsets.
148 intptr_t length = reader->ReadUInt();
149 int* end_offsets = new int[length];
150 for (intptr_t i = 0; i < length; ++i) {
151 end_offsets[i] = reader->ReadUInt();
152 }
153 // Read the UTF-8 encoded strings.
154 strings_.EnsureInitialized(length);
155 intptr_t start_offset = 0;
156 for (intptr_t i = 0; i < length; ++i) {
157 ASSERT(strings_[i] == NULL);
158 strings_[i] = String::ReadRaw(reader, end_offsets[i] - start_offset);
159 start_offset = end_offsets[i];
160 }
161 delete[] end_offsets;
162 }
163
164
144 void SourceTable::ReadFrom(Reader* reader) { 165 void SourceTable::ReadFrom(Reader* reader) {
145 size_ = reader->helper()->program()->source_uri_table().strings().length(); 166 size_ = reader->helper()->program()->source_uri_table().strings().length();
146 source_code_ = new String*[size_]; 167 source_code_ = new String*[size_];
147 line_starts_ = new intptr_t*[size_]; 168 line_starts_ = new intptr_t*[size_];
148 line_count_ = new intptr_t[size_]; 169 line_count_ = new intptr_t[size_];
149 for (intptr_t i = 0; i < size_; ++i) { 170 for (intptr_t i = 0; i < size_; ++i) {
150 source_code_[i] = StringImpl::ReadFrom(reader); 171 source_code_[i] = StringImpl::ReadFrom(reader);
151 intptr_t line_count = reader->ReadUInt(); 172 intptr_t line_count = reader->ReadUInt();
152 intptr_t* line_starts = new intptr_t[line_count]; 173 intptr_t* line_starts = new intptr_t[line_count];
153 line_count_[i] = line_count; 174 line_count_[i] = line_count;
(...skipping 1304 matching lines...) Expand 10 before | Expand all | Expand 10 after
1458 1479
1459 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, 1480 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer,
1460 intptr_t buffer_length) { 1481 intptr_t buffer_length) {
1461 kernel::Reader reader(buffer, buffer_length); 1482 kernel::Reader reader(buffer, buffer_length);
1462 return kernel::Program::ReadFrom(&reader); 1483 return kernel::Program::ReadFrom(&reader);
1463 } 1484 }
1464 1485
1465 1486
1466 } // namespace dart 1487 } // namespace dart
1467 #endif // !defined(DART_PRECOMPILED_RUNTIME) 1488 #endif // !defined(DART_PRECOMPILED_RUNTIME)
OLDNEW
« no previous file with comments | « runtime/vm/kernel.h ('k') | runtime/vm/kernel_binary_flowgraph.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698