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

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

Issue 2891053003: Add support for converted closures with explicit contexts to VM (Closed)
Patch Set: Update the code according to Martin's comments Created 3 years, 6 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
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 1133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1144 1144
1145 1145
1146 VectorCreation* VectorCreation::ReadFrom(Reader* reader) { 1146 VectorCreation* VectorCreation::ReadFrom(Reader* reader) {
1147 TRACE_READ_OFFSET(); 1147 TRACE_READ_OFFSET();
1148 1148
1149 VectorCreation* vector_creation = new VectorCreation(); 1149 VectorCreation* vector_creation = new VectorCreation();
1150 vector_creation->kernel_offset_ = 1150 vector_creation->kernel_offset_ =
1151 reader->offset() - 1; // -1 to include tag byte. 1151 reader->offset() - 1; // -1 to include tag byte.
1152 vector_creation->value_ = reader->ReadUInt(); 1152 vector_creation->value_ = reader->ReadUInt();
1153 1153
1154 vector_creation->can_stream_ = true;
1155
1154 return vector_creation; 1156 return vector_creation;
1155 } 1157 }
1156 1158
1157 1159
1158 VectorGet* VectorGet::ReadFrom(Reader* reader) { 1160 VectorGet* VectorGet::ReadFrom(Reader* reader) {
1159 TRACE_READ_OFFSET(); 1161 TRACE_READ_OFFSET();
1160 1162
1161 VectorGet* vector_get = new VectorGet(); 1163 VectorGet* vector_get = new VectorGet();
1162 vector_get->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. 1164 vector_get->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte.
1163 vector_get->vector_expression_ = Expression::ReadFrom(reader); 1165 vector_get->vector_expression_ = Expression::ReadFrom(reader);
1164 vector_get->index_ = reader->ReadUInt(); 1166 vector_get->index_ = reader->ReadUInt();
1165 1167
1166 vector_get->can_stream_ = false; 1168 vector_get->can_stream_ = true;
1167 1169
1168 return vector_get; 1170 return vector_get;
1169 } 1171 }
1170 1172
1171 1173
1172 VectorSet* VectorSet::ReadFrom(Reader* reader) { 1174 VectorSet* VectorSet::ReadFrom(Reader* reader) {
1173 TRACE_READ_OFFSET(); 1175 TRACE_READ_OFFSET();
1174 1176
1175 VectorSet* vector_set = new VectorSet(); 1177 VectorSet* vector_set = new VectorSet();
1176 vector_set->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte. 1178 vector_set->kernel_offset_ = reader->offset() - 1; // -1 to include tag byte.
1177 vector_set->vector_expression_ = Expression::ReadFrom(reader); 1179 vector_set->vector_expression_ = Expression::ReadFrom(reader);
1178 vector_set->index_ = reader->ReadUInt(); 1180 vector_set->index_ = reader->ReadUInt();
1179 vector_set->value_ = Expression::ReadFrom(reader); 1181 vector_set->value_ = Expression::ReadFrom(reader);
1180 1182
1181 vector_set->can_stream_ = false; 1183 vector_set->can_stream_ = vector_set->value_->can_stream();
1182 1184
1183 return vector_set; 1185 return vector_set;
1184 } 1186 }
1185 1187
1186 1188
1187 VectorCopy* VectorCopy::ReadFrom(Reader* reader) { 1189 VectorCopy* VectorCopy::ReadFrom(Reader* reader) {
1188 TRACE_READ_OFFSET(); 1190 TRACE_READ_OFFSET();
1189 1191
1190 VectorCopy* vector_copy = new VectorCopy(); 1192 VectorCopy* vector_copy = new VectorCopy();
1191 vector_copy->kernel_offset_ = 1193 vector_copy->kernel_offset_ =
1192 reader->offset() - 1; // -1 to include tag byte. 1194 reader->offset() - 1; // -1 to include tag byte.
1193 vector_copy->vector_expression_ = Expression::ReadFrom(reader); 1195 vector_copy->vector_expression_ = Expression::ReadFrom(reader);
1194 1196
1195 vector_copy->can_stream_ = false; 1197 vector_copy->can_stream_ = true;
1196 1198
1197 return vector_copy; 1199 return vector_copy;
1198 } 1200 }
1199 1201
1200 1202
1201 ClosureCreation* ClosureCreation::ReadFrom(Reader* reader) { 1203 ClosureCreation* ClosureCreation::ReadFrom(Reader* reader) {
1202 TRACE_READ_OFFSET(); 1204 TRACE_READ_OFFSET();
1203 1205
1204 ClosureCreation* closure_creation = new ClosureCreation(); 1206 ClosureCreation* closure_creation = new ClosureCreation();
1205 closure_creation->kernel_offset_ = 1207 closure_creation->kernel_offset_ =
1206 reader->offset() - 1; // to include tag byte. 1208 reader->offset() - 1; // to include tag byte.
1207 closure_creation->top_level_function_reference_ = 1209 closure_creation->top_level_function_reference_ =
1208 Reference::ReadMemberFrom(reader); 1210 Reference::ReadMemberFrom(reader);
1209 closure_creation->context_vector_ = Expression::ReadFrom(reader); 1211 closure_creation->context_vector_ = Expression::ReadFrom(reader);
1210 closure_creation->function_type_ = 1212 closure_creation->function_type_ =
1211 FunctionType::Cast(DartType::ReadFrom(reader)); 1213 FunctionType::Cast(DartType::ReadFrom(reader));
1212 1214
1213 closure_creation->can_stream_ = false; 1215 closure_creation->can_stream_ = true;
1214 1216
1215 return closure_creation; 1217 return closure_creation;
1216 } 1218 }
1217 1219
1218 1220
1219 Statement* Statement::ReadFrom(Reader* reader) { 1221 Statement* Statement::ReadFrom(Reader* reader) {
1220 TRACE_READ_OFFSET(); 1222 TRACE_READ_OFFSET();
1221 Tag tag = reader->ReadTag(); 1223 Tag tag = reader->ReadTag();
1222 switch (tag) { 1224 switch (tag) {
1223 case kInvalidStatement: 1225 case kInvalidStatement:
(...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after
1881 1883
1882 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer, 1884 kernel::Program* ReadPrecompiledKernelFromBuffer(const uint8_t* buffer,
1883 intptr_t buffer_length) { 1885 intptr_t buffer_length) {
1884 kernel::Reader reader(buffer, buffer_length); 1886 kernel::Reader reader(buffer, buffer_length);
1885 return kernel::Program::ReadFrom(&reader); 1887 return kernel::Program::ReadFrom(&reader);
1886 } 1888 }
1887 1889
1888 1890
1889 } // namespace dart 1891 } // namespace dart
1890 #endif // !defined(DART_PRECOMPILED_RUNTIME) 1892 #endif // !defined(DART_PRECOMPILED_RUNTIME)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698