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

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

Issue 2626613002: More offsets in kernel (Closed)
Patch Set: Fixed FileOffset storage for classes in binary.md Created 3 years, 11 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') | no next file » | 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 <map> 6 #include <map>
7 #include <vector> 7 #include <vector>
8 8
9 #include "platform/globals.h" 9 #include "platform/globals.h"
10 #include "vm/flags.h" 10 #include "vm/flags.h"
(...skipping 900 matching lines...) Expand 10 before | Expand all | Expand 10 after
911 } 911 }
912 } 912 }
913 fields().WriteTo(writer); 913 fields().WriteTo(writer);
914 procedures().WriteTo(writer); 914 procedures().WriteTo(writer);
915 } 915 }
916 916
917 917
918 Class* Class::ReadFrom(Reader* reader) { 918 Class* Class::ReadFrom(Reader* reader) {
919 TRACE_READ_OFFSET(); 919 TRACE_READ_OFFSET();
920 920
921 position_ = reader->ReadPosition();
921 is_abstract_ = reader->ReadBool(); 922 is_abstract_ = reader->ReadBool();
922 name_ = Reference::ReadStringFrom(reader); 923 name_ = Reference::ReadStringFrom(reader);
923 source_uri_index_ = reader->ReadUInt(); 924 source_uri_index_ = reader->ReadUInt();
924 annotations_.ReadFromStatic<Expression>(reader); 925 annotations_.ReadFromStatic<Expression>(reader);
925 926
926 return this; 927 return this;
927 } 928 }
928 929
929 930
930 void Class::WriteTo(Writer* writer) { 931 void Class::WriteTo(Writer* writer) {
931 TRACE_WRITE_OFFSET(); 932 TRACE_WRITE_OFFSET();
933 writer->WritePosition(position_);
932 writer->WriteBool(is_abstract_); 934 writer->WriteBool(is_abstract_);
933 name_->WriteTo(writer); 935 name_->WriteTo(writer);
934 writer->WriteUInt(source_uri_index_); 936 writer->WriteUInt(source_uri_index_);
935 annotations_.WriteTo(writer); 937 annotations_.WriteTo(writer);
936 } 938 }
937 939
938 940
939 NormalClass* NormalClass::ReadFrom(Reader* reader) { 941 NormalClass* NormalClass::ReadFrom(Reader* reader) {
940 TRACE_READ_OFFSET(); 942 TRACE_READ_OFFSET();
941 Class::ReadFrom(reader); 943 Class::ReadFrom(reader);
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
1159 writer->WriteUInt(index); 1161 writer->WriteUInt(index);
1160 } 1162 }
1161 1163
1162 1164
1163 Field* Field::ReadFrom(Reader* reader) { 1165 Field* Field::ReadFrom(Reader* reader) {
1164 TRACE_READ_OFFSET(); 1166 TRACE_READ_OFFSET();
1165 Tag tag = reader->ReadTag(); 1167 Tag tag = reader->ReadTag();
1166 ASSERT(tag == kField); 1168 ASSERT(tag == kField);
1167 1169
1168 position_ = reader->ReadPosition(); 1170 position_ = reader->ReadPosition();
1171 end_position_ = reader->ReadPosition();
1169 flags_ = reader->ReadFlags(); 1172 flags_ = reader->ReadFlags();
1170 name_ = Name::ReadFrom(reader); 1173 name_ = Name::ReadFrom(reader);
1171 source_uri_index_ = reader->ReadUInt(); 1174 source_uri_index_ = reader->ReadUInt();
1172 annotations_.ReadFromStatic<Expression>(reader); 1175 annotations_.ReadFromStatic<Expression>(reader);
1173 type_ = DartType::ReadFrom(reader); 1176 type_ = DartType::ReadFrom(reader);
1174 inferred_value_ = reader->ReadOptional<InferredValue>(); 1177 inferred_value_ = reader->ReadOptional<InferredValue>();
1175 initializer_ = reader->ReadOptional<Expression>(); 1178 initializer_ = reader->ReadOptional<Expression>();
1176 return this; 1179 return this;
1177 } 1180 }
1178 1181
1179 1182
1180 void Field::WriteTo(Writer* writer) { 1183 void Field::WriteTo(Writer* writer) {
1181 TRACE_WRITE_OFFSET(); 1184 TRACE_WRITE_OFFSET();
1182 writer->WriteTag(kField); 1185 writer->WriteTag(kField);
1183 writer->WritePosition(position_); 1186 writer->WritePosition(position_);
1187 writer->WritePosition(end_position_);
1184 writer->WriteFlags(flags_); 1188 writer->WriteFlags(flags_);
1185 name_->WriteTo(writer); 1189 name_->WriteTo(writer);
1186 writer->WriteUInt(source_uri_index_); 1190 writer->WriteUInt(source_uri_index_);
1187 annotations_.WriteTo(writer); 1191 annotations_.WriteTo(writer);
1188 type_->WriteTo(writer); 1192 type_->WriteTo(writer);
1189 writer->WriteOptional<InferredValue>(inferred_value_); 1193 writer->WriteOptional<InferredValue>(inferred_value_);
1190 writer->WriteOptional<Expression>(initializer_); 1194 writer->WriteOptional<Expression>(initializer_);
1191 } 1195 }
1192 1196
1193 1197
1194 Constructor* Constructor::ReadFrom(Reader* reader) { 1198 Constructor* Constructor::ReadFrom(Reader* reader) {
1195 TRACE_READ_OFFSET(); 1199 TRACE_READ_OFFSET();
1196 Tag tag = reader->ReadTag(); 1200 Tag tag = reader->ReadTag();
1197 ASSERT(tag == kConstructor); 1201 ASSERT(tag == kConstructor);
1198 1202
1199 VariableScope<ReaderHelper> parameters(reader->helper()); 1203 VariableScope<ReaderHelper> parameters(reader->helper());
1204 position_ = reader->ReadPosition();
1205 end_position_ = reader->ReadPosition();
1200 flags_ = reader->ReadFlags(); 1206 flags_ = reader->ReadFlags();
1201 name_ = Name::ReadFrom(reader); 1207 name_ = Name::ReadFrom(reader);
1202 annotations_.ReadFromStatic<Expression>(reader); 1208 annotations_.ReadFromStatic<Expression>(reader);
1203 function_ = FunctionNode::ReadFrom(reader); 1209 function_ = FunctionNode::ReadFrom(reader);
1204 initializers_.ReadFromStatic<Initializer>(reader); 1210 initializers_.ReadFromStatic<Initializer>(reader);
1205 return this; 1211 return this;
1206 } 1212 }
1207 1213
1208 1214
1209 void Constructor::WriteTo(Writer* writer) { 1215 void Constructor::WriteTo(Writer* writer) {
1210 TRACE_WRITE_OFFSET(); 1216 TRACE_WRITE_OFFSET();
1211 writer->WriteTag(kConstructor); 1217 writer->WriteTag(kConstructor);
1212 1218
1219 writer->WritePosition(position_);
1220 writer->WritePosition(end_position_);
1213 VariableScope<WriterHelper> parameters(writer->helper()); 1221 VariableScope<WriterHelper> parameters(writer->helper());
1214 writer->WriteFlags(flags_); 1222 writer->WriteFlags(flags_);
1215 name_->WriteTo(writer); 1223 name_->WriteTo(writer);
1216 annotations_.WriteTo(writer); 1224 annotations_.WriteTo(writer);
1217 function_->WriteTo(writer); 1225 function_->WriteTo(writer);
1218 initializers_.WriteTo(writer); 1226 initializers_.WriteTo(writer);
1219 } 1227 }
1220 1228
1221 1229
1222 Procedure* Procedure::ReadFrom(Reader* reader) { 1230 Procedure* Procedure::ReadFrom(Reader* reader) {
1223 TRACE_READ_OFFSET(); 1231 TRACE_READ_OFFSET();
1224 Tag tag = reader->ReadTag(); 1232 Tag tag = reader->ReadTag();
1225 ASSERT(tag == kProcedure); 1233 ASSERT(tag == kProcedure);
1226 1234
1227 VariableScope<ReaderHelper> parameters(reader->helper()); 1235 VariableScope<ReaderHelper> parameters(reader->helper());
1236 position_ = reader->ReadPosition();
1237 end_position_ = reader->ReadPosition();
1228 kind_ = static_cast<ProcedureKind>(reader->ReadByte()); 1238 kind_ = static_cast<ProcedureKind>(reader->ReadByte());
1229 flags_ = reader->ReadFlags(); 1239 flags_ = reader->ReadFlags();
1230 name_ = Name::ReadFrom(reader); 1240 name_ = Name::ReadFrom(reader);
1231 source_uri_index_ = reader->ReadUInt(); 1241 source_uri_index_ = reader->ReadUInt();
1232 annotations_.ReadFromStatic<Expression>(reader); 1242 annotations_.ReadFromStatic<Expression>(reader);
1233 function_ = reader->ReadOptional<FunctionNode>(); 1243 function_ = reader->ReadOptional<FunctionNode>();
1234 return this; 1244 return this;
1235 } 1245 }
1236 1246
1237 1247
1238 void Procedure::WriteTo(Writer* writer) { 1248 void Procedure::WriteTo(Writer* writer) {
1239 TRACE_WRITE_OFFSET(); 1249 TRACE_WRITE_OFFSET();
1240 writer->WriteTag(kProcedure); 1250 writer->WriteTag(kProcedure);
1241 1251
1252 writer->WritePosition(position_);
1253 writer->WritePosition(end_position_);
1242 VariableScope<WriterHelper> parameters(writer->helper()); 1254 VariableScope<WriterHelper> parameters(writer->helper());
1243 writer->WriteByte(kind_); 1255 writer->WriteByte(kind_);
1244 writer->WriteFlags(flags_); 1256 writer->WriteFlags(flags_);
1245 name_->WriteTo(writer); 1257 name_->WriteTo(writer);
1246 writer->WriteUInt(source_uri_index_); 1258 writer->WriteUInt(source_uri_index_);
1247 annotations_.WriteTo(writer); 1259 annotations_.WriteTo(writer);
1248 writer->WriteOptional<FunctionNode>(function_); 1260 writer->WriteOptional<FunctionNode>(function_);
1249 } 1261 }
1250 1262
1251 1263
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
1456 1468
1457 void InvalidExpression::WriteTo(Writer* writer) { 1469 void InvalidExpression::WriteTo(Writer* writer) {
1458 TRACE_WRITE_OFFSET(); 1470 TRACE_WRITE_OFFSET();
1459 writer->WriteTag(kInvalidExpression); 1471 writer->WriteTag(kInvalidExpression);
1460 } 1472 }
1461 1473
1462 1474
1463 VariableGet* VariableGet::ReadFrom(Reader* reader) { 1475 VariableGet* VariableGet::ReadFrom(Reader* reader) {
1464 TRACE_READ_OFFSET(); 1476 TRACE_READ_OFFSET();
1465 VariableGet* get = new VariableGet(); 1477 VariableGet* get = new VariableGet();
1478 get->position_ = reader->ReadPosition();
1466 get->variable_ = reader->helper()->variables().Lookup(reader->ReadUInt()); 1479 get->variable_ = reader->helper()->variables().Lookup(reader->ReadUInt());
1467 reader->ReadOptional<DartType>(); // Unused promoted type. 1480 reader->ReadOptional<DartType>(); // Unused promoted type.
1468 return get; 1481 return get;
1469 } 1482 }
1470 1483
1471 1484
1472 VariableGet* VariableGet::ReadFrom(Reader* reader, uint8_t payload) { 1485 VariableGet* VariableGet::ReadFrom(Reader* reader, uint8_t payload) {
1473 TRACE_READ_OFFSET(); 1486 TRACE_READ_OFFSET();
1474 VariableGet* get = new VariableGet(); 1487 VariableGet* get = new VariableGet();
1488 get->position_ = reader->ReadPosition();
1475 get->variable_ = reader->helper()->variables().Lookup(payload); 1489 get->variable_ = reader->helper()->variables().Lookup(payload);
1476 return get; 1490 return get;
1477 } 1491 }
1478 1492
1479 1493
1480 void VariableGet::WriteTo(Writer* writer) { 1494 void VariableGet::WriteTo(Writer* writer) {
1481 TRACE_WRITE_OFFSET(); 1495 TRACE_WRITE_OFFSET();
1482 int index = writer->helper()->variables().Lookup(variable_); 1496 int index = writer->helper()->variables().Lookup(variable_);
1483 if ((index & kSpecializedPayloadMask) == index) { 1497 if ((index & kSpecializedPayloadMask) == index) {
1484 writer->WriteTag(kSpecializedVariableGet, static_cast<uint8_t>(index)); 1498 writer->WriteTag(kSpecializedVariableGet, static_cast<uint8_t>(index));
1499 writer->WritePosition(position_);
1485 } else { 1500 } else {
1486 writer->WriteTag(kVariableGet); 1501 writer->WriteTag(kVariableGet);
1502 writer->WritePosition(position_);
1487 writer->WriteUInt(index); 1503 writer->WriteUInt(index);
1488 writer->WriteOptional<DartType>(NULL); 1504 writer->WriteOptional<DartType>(NULL);
1489 } 1505 }
1490 } 1506 }
1491 1507
1492 1508
1493 VariableSet* VariableSet::ReadFrom(Reader* reader) { 1509 VariableSet* VariableSet::ReadFrom(Reader* reader) {
1494 TRACE_READ_OFFSET(); 1510 TRACE_READ_OFFSET();
1495 VariableSet* set = new VariableSet(); 1511 VariableSet* set = new VariableSet();
1512 set->position_ = reader->ReadPosition();
1496 set->variable_ = reader->helper()->variables().Lookup(reader->ReadUInt()); 1513 set->variable_ = reader->helper()->variables().Lookup(reader->ReadUInt());
1497 set->expression_ = Expression::ReadFrom(reader); 1514 set->expression_ = Expression::ReadFrom(reader);
1498 return set; 1515 return set;
1499 } 1516 }
1500 1517
1501 1518
1502 VariableSet* VariableSet::ReadFrom(Reader* reader, uint8_t payload) { 1519 VariableSet* VariableSet::ReadFrom(Reader* reader, uint8_t payload) {
1503 TRACE_READ_OFFSET(); 1520 TRACE_READ_OFFSET();
1504 VariableSet* set = new VariableSet(); 1521 VariableSet* set = new VariableSet();
1505 set->variable_ = reader->helper()->variables().Lookup(payload); 1522 set->variable_ = reader->helper()->variables().Lookup(payload);
1523 set->position_ = reader->ReadPosition();
1506 set->expression_ = Expression::ReadFrom(reader); 1524 set->expression_ = Expression::ReadFrom(reader);
1507 return set; 1525 return set;
1508 } 1526 }
1509 1527
1510 1528
1511 void VariableSet::WriteTo(Writer* writer) { 1529 void VariableSet::WriteTo(Writer* writer) {
1512 TRACE_WRITE_OFFSET(); 1530 TRACE_WRITE_OFFSET();
1513 int index = writer->helper()->variables().Lookup(variable_); 1531 int index = writer->helper()->variables().Lookup(variable_);
1514 if ((index & kSpecializedPayloadMask) == index) { 1532 if ((index & kSpecializedPayloadMask) == index) {
1515 writer->WriteTag(kSpecializedVariableSet, static_cast<uint8_t>(index)); 1533 writer->WriteTag(kSpecializedVariableSet, static_cast<uint8_t>(index));
1534 writer->WritePosition(position_);
1516 } else { 1535 } else {
1517 writer->WriteTag(kVariableSet); 1536 writer->WriteTag(kVariableSet);
1537 writer->WritePosition(position_);
1518 writer->WriteUInt(index); 1538 writer->WriteUInt(index);
1519 } 1539 }
1520 expression_->WriteTo(writer); 1540 expression_->WriteTo(writer);
1521 } 1541 }
1522 1542
1523 1543
1524 PropertyGet* PropertyGet::ReadFrom(Reader* reader) { 1544 PropertyGet* PropertyGet::ReadFrom(Reader* reader) {
1525 TRACE_READ_OFFSET(); 1545 TRACE_READ_OFFSET();
1526 PropertyGet* get = new PropertyGet(); 1546 PropertyGet* get = new PropertyGet();
1527 get->position_ = reader->ReadPosition(); 1547 get->position_ = reader->ReadPosition();
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
1803 condition_->WriteTo(writer); 1823 condition_->WriteTo(writer);
1804 then_->WriteTo(writer); 1824 then_->WriteTo(writer);
1805 otherwise_->WriteTo(writer); 1825 otherwise_->WriteTo(writer);
1806 writer->WriteOptional<DartType>(NULL); // Unused static type. 1826 writer->WriteOptional<DartType>(NULL); // Unused static type.
1807 } 1827 }
1808 1828
1809 1829
1810 StringConcatenation* StringConcatenation::ReadFrom(Reader* reader) { 1830 StringConcatenation* StringConcatenation::ReadFrom(Reader* reader) {
1811 TRACE_READ_OFFSET(); 1831 TRACE_READ_OFFSET();
1812 StringConcatenation* concat = new StringConcatenation(); 1832 StringConcatenation* concat = new StringConcatenation();
1833 concat->position_ = reader->ReadPosition();
1813 concat->expressions_.ReadFromStatic<Expression>(reader); 1834 concat->expressions_.ReadFromStatic<Expression>(reader);
1814 return concat; 1835 return concat;
1815 } 1836 }
1816 1837
1817 1838
1818 void StringConcatenation::WriteTo(Writer* writer) { 1839 void StringConcatenation::WriteTo(Writer* writer) {
1819 TRACE_WRITE_OFFSET(); 1840 TRACE_WRITE_OFFSET();
1820 writer->WriteTag(kStringConcatenation); 1841 writer->WriteTag(kStringConcatenation);
1842 writer->WritePosition(position_);
1821 expressions_.WriteTo(writer); 1843 expressions_.WriteTo(writer);
1822 } 1844 }
1823 1845
1824 1846
1825 IsExpression* IsExpression::ReadFrom(Reader* reader) { 1847 IsExpression* IsExpression::ReadFrom(Reader* reader) {
1826 TRACE_READ_OFFSET(); 1848 TRACE_READ_OFFSET();
1827 IsExpression* expr = new IsExpression(); 1849 IsExpression* expr = new IsExpression();
1850 expr->position_ = reader->ReadPosition();
1828 expr->operand_ = Expression::ReadFrom(reader); 1851 expr->operand_ = Expression::ReadFrom(reader);
1829 expr->type_ = DartType::ReadFrom(reader); 1852 expr->type_ = DartType::ReadFrom(reader);
1830 return expr; 1853 return expr;
1831 } 1854 }
1832 1855
1833 1856
1834 void IsExpression::WriteTo(Writer* writer) { 1857 void IsExpression::WriteTo(Writer* writer) {
1835 TRACE_WRITE_OFFSET(); 1858 TRACE_WRITE_OFFSET();
1836 writer->WriteTag(kIsExpression); 1859 writer->WriteTag(kIsExpression);
1860 writer->WritePosition(position_);
1837 operand_->WriteTo(writer); 1861 operand_->WriteTo(writer);
1838 type_->WriteTo(writer); 1862 type_->WriteTo(writer);
1839 } 1863 }
1840 1864
1841 1865
1842 AsExpression* AsExpression::ReadFrom(Reader* reader) { 1866 AsExpression* AsExpression::ReadFrom(Reader* reader) {
1843 TRACE_READ_OFFSET(); 1867 TRACE_READ_OFFSET();
1844 AsExpression* expr = new AsExpression(); 1868 AsExpression* expr = new AsExpression();
1845 expr->operand_ = Expression::ReadFrom(reader); 1869 expr->operand_ = Expression::ReadFrom(reader);
1846 expr->type_ = DartType::ReadFrom(reader); 1870 expr->type_ = DartType::ReadFrom(reader);
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
2038 writer->WriteTag(is_const_ ? kConstListLiteral : kListLiteral); 2062 writer->WriteTag(is_const_ ? kConstListLiteral : kListLiteral);
2039 type_->WriteTo(writer); 2063 type_->WriteTo(writer);
2040 expressions_.WriteTo(writer); 2064 expressions_.WriteTo(writer);
2041 } 2065 }
2042 2066
2043 2067
2044 MapLiteral* MapLiteral::ReadFrom(Reader* reader, bool is_const) { 2068 MapLiteral* MapLiteral::ReadFrom(Reader* reader, bool is_const) {
2045 TRACE_READ_OFFSET(); 2069 TRACE_READ_OFFSET();
2046 MapLiteral* literal = new MapLiteral(); 2070 MapLiteral* literal = new MapLiteral();
2047 literal->is_const_ = is_const; 2071 literal->is_const_ = is_const;
2072 literal->position_ = reader->ReadPosition();
2048 literal->key_type_ = DartType::ReadFrom(reader); 2073 literal->key_type_ = DartType::ReadFrom(reader);
2049 literal->value_type_ = DartType::ReadFrom(reader); 2074 literal->value_type_ = DartType::ReadFrom(reader);
2050 literal->entries_.ReadFromStatic<MapEntry>(reader); 2075 literal->entries_.ReadFromStatic<MapEntry>(reader);
2051 return literal; 2076 return literal;
2052 } 2077 }
2053 2078
2054 2079
2055 void MapLiteral::WriteTo(Writer* writer) { 2080 void MapLiteral::WriteTo(Writer* writer) {
2056 TRACE_WRITE_OFFSET(); 2081 TRACE_WRITE_OFFSET();
2057 writer->WriteTag(is_const_ ? kConstMapLiteral : kMapLiteral); 2082 writer->WriteTag(is_const_ ? kConstMapLiteral : kMapLiteral);
2083 writer->WritePosition(position_);
2058 key_type_->WriteTo(writer); 2084 key_type_->WriteTo(writer);
2059 value_type_->WriteTo(writer); 2085 value_type_->WriteTo(writer);
2060 entries_.WriteTo(writer); 2086 entries_.WriteTo(writer);
2061 } 2087 }
2062 2088
2063 2089
2064 MapEntry* MapEntry::ReadFrom(Reader* reader) { 2090 MapEntry* MapEntry::ReadFrom(Reader* reader) {
2065 MapEntry* entry = new MapEntry(); 2091 MapEntry* entry = new MapEntry();
2066 entry->key_ = Expression::ReadFrom(reader); 2092 entry->key_ = Expression::ReadFrom(reader);
2067 entry->value_ = Expression::ReadFrom(reader); 2093 entry->value_ = Expression::ReadFrom(reader);
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
2449 writer->WriteTag(kIfStatement); 2475 writer->WriteTag(kIfStatement);
2450 condition_->WriteTo(writer); 2476 condition_->WriteTo(writer);
2451 then_->WriteTo(writer); 2477 then_->WriteTo(writer);
2452 otherwise_->WriteTo(writer); 2478 otherwise_->WriteTo(writer);
2453 } 2479 }
2454 2480
2455 2481
2456 ReturnStatement* ReturnStatement::ReadFrom(Reader* reader) { 2482 ReturnStatement* ReturnStatement::ReadFrom(Reader* reader) {
2457 TRACE_READ_OFFSET(); 2483 TRACE_READ_OFFSET();
2458 ReturnStatement* ret = new ReturnStatement(); 2484 ReturnStatement* ret = new ReturnStatement();
2485 ret->position_ = reader->ReadPosition();
2459 ret->expression_ = reader->ReadOptional<Expression>(); 2486 ret->expression_ = reader->ReadOptional<Expression>();
2460 return ret; 2487 return ret;
2461 } 2488 }
2462 2489
2463 2490
2464 void ReturnStatement::WriteTo(Writer* writer) { 2491 void ReturnStatement::WriteTo(Writer* writer) {
2465 TRACE_WRITE_OFFSET(); 2492 TRACE_WRITE_OFFSET();
2466 writer->WriteTag(kReturnStatement); 2493 writer->WriteTag(kReturnStatement);
2494 writer->WritePosition(position_);
2467 writer->WriteOptional<Expression>(expression_); 2495 writer->WriteOptional<Expression>(expression_);
2468 } 2496 }
2469 2497
2470 2498
2471 TryCatch* TryCatch::ReadFrom(Reader* reader) { 2499 TryCatch* TryCatch::ReadFrom(Reader* reader) {
2472 TRACE_READ_OFFSET(); 2500 TRACE_READ_OFFSET();
2473 TryCatch* tc = new TryCatch(); 2501 TryCatch* tc = new TryCatch();
2474 tc->body_ = Statement::ReadFrom(reader); 2502 tc->body_ = Statement::ReadFrom(reader);
2475 tc->catches_.ReadFromStatic<Catch>(reader); 2503 tc->catches_.ReadFromStatic<Catch>(reader);
2476 return tc; 2504 return tc;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
2524 TRACE_WRITE_OFFSET(); 2552 TRACE_WRITE_OFFSET();
2525 writer->WriteTag(kTryFinally); 2553 writer->WriteTag(kTryFinally);
2526 body_->WriteTo(writer); 2554 body_->WriteTo(writer);
2527 finalizer_->WriteTo(writer); 2555 finalizer_->WriteTo(writer);
2528 } 2556 }
2529 2557
2530 2558
2531 YieldStatement* YieldStatement::ReadFrom(Reader* reader) { 2559 YieldStatement* YieldStatement::ReadFrom(Reader* reader) {
2532 TRACE_READ_OFFSET(); 2560 TRACE_READ_OFFSET();
2533 YieldStatement* stmt = new YieldStatement(); 2561 YieldStatement* stmt = new YieldStatement();
2562 stmt->position_ = reader->ReadPosition();
2534 stmt->flags_ = reader->ReadByte(); 2563 stmt->flags_ = reader->ReadByte();
2535 stmt->expression_ = Expression::ReadFrom(reader); 2564 stmt->expression_ = Expression::ReadFrom(reader);
2536 return stmt; 2565 return stmt;
2537 } 2566 }
2538 2567
2539 2568
2540 void YieldStatement::WriteTo(Writer* writer) { 2569 void YieldStatement::WriteTo(Writer* writer) {
2541 TRACE_WRITE_OFFSET(); 2570 TRACE_WRITE_OFFSET();
2542 writer->WriteTag(kYieldStatement); 2571 writer->WriteTag(kYieldStatement);
2572 writer->WritePosition(position_);
2543 writer->WriteByte(flags_); 2573 writer->WriteByte(flags_);
2544 expression_->WriteTo(writer); 2574 expression_->WriteTo(writer);
2545 } 2575 }
2546 2576
2547 2577
2548 VariableDeclaration* VariableDeclaration::ReadFrom(Reader* reader) { 2578 VariableDeclaration* VariableDeclaration::ReadFrom(Reader* reader) {
2549 TRACE_READ_OFFSET(); 2579 TRACE_READ_OFFSET();
2550 Tag tag = reader->ReadTag(); 2580 Tag tag = reader->ReadTag();
2551 ASSERT(tag == kVariableDeclaration); 2581 ASSERT(tag == kVariableDeclaration);
2552 return VariableDeclaration::ReadFromImpl(reader); 2582 return VariableDeclaration::ReadFromImpl(reader);
2553 } 2583 }
2554 2584
2555 2585
2556 VariableDeclaration* VariableDeclaration::ReadFromImpl(Reader* reader) { 2586 VariableDeclaration* VariableDeclaration::ReadFromImpl(Reader* reader) {
2557 TRACE_READ_OFFSET(); 2587 TRACE_READ_OFFSET();
2558 VariableDeclaration* decl = new VariableDeclaration(); 2588 VariableDeclaration* decl = new VariableDeclaration();
2589 decl->position_ = reader->ReadPosition();
2559 decl->flags_ = reader->ReadFlags(); 2590 decl->flags_ = reader->ReadFlags();
2560 decl->name_ = Reference::ReadStringFrom(reader); 2591 decl->name_ = Reference::ReadStringFrom(reader);
2561 decl->type_ = DartType::ReadFrom(reader); 2592 decl->type_ = DartType::ReadFrom(reader);
2562 decl->inferred_value_ = reader->ReadOptional<InferredValue>(); 2593 decl->inferred_value_ = reader->ReadOptional<InferredValue>();
2563 decl->initializer_ = reader->ReadOptional<Expression>(); 2594 decl->initializer_ = reader->ReadOptional<Expression>();
2564 reader->helper()->variables().Push(decl); 2595 reader->helper()->variables().Push(decl);
2565 return decl; 2596 return decl;
2566 } 2597 }
2567 2598
2568 2599
2569 void VariableDeclaration::WriteTo(Writer* writer) { 2600 void VariableDeclaration::WriteTo(Writer* writer) {
2570 TRACE_WRITE_OFFSET(); 2601 TRACE_WRITE_OFFSET();
2571 writer->WriteTag(kVariableDeclaration); 2602 writer->WriteTag(kVariableDeclaration);
2572 WriteToImpl(writer); 2603 WriteToImpl(writer);
2573 } 2604 }
2574 2605
2575 2606
2576 void VariableDeclaration::WriteToImpl(Writer* writer) { 2607 void VariableDeclaration::WriteToImpl(Writer* writer) {
2577 TRACE_WRITE_OFFSET(); 2608 TRACE_WRITE_OFFSET();
2609 writer->WritePosition(position_);
2578 writer->WriteFlags(flags_); 2610 writer->WriteFlags(flags_);
2579 name_->WriteTo(writer); 2611 name_->WriteTo(writer);
2580 type_->WriteTo(writer); 2612 type_->WriteTo(writer);
2581 writer->WriteOptional<InferredValue>(inferred_value_); 2613 writer->WriteOptional<InferredValue>(inferred_value_);
2582 writer->WriteOptional<Expression>(initializer_); 2614 writer->WriteOptional<Expression>(initializer_);
2583 writer->helper()->variables().Push(this); 2615 writer->helper()->variables().Push(this);
2584 } 2616 }
2585 2617
2586 2618
2587 FunctionDeclaration* FunctionDeclaration::ReadFrom(Reader* reader) { 2619 FunctionDeclaration* FunctionDeclaration::ReadFrom(Reader* reader) {
2588 TRACE_READ_OFFSET(); 2620 TRACE_READ_OFFSET();
2589 FunctionDeclaration* decl = new FunctionDeclaration(); 2621 FunctionDeclaration* decl = new FunctionDeclaration();
2622 decl->position_ = reader->ReadPosition();
2590 decl->variable_ = VariableDeclaration::ReadFromImpl(reader); 2623 decl->variable_ = VariableDeclaration::ReadFromImpl(reader);
2591 VariableScope<ReaderHelper> parameters(reader->helper()); 2624 VariableScope<ReaderHelper> parameters(reader->helper());
2592 decl->function_ = FunctionNode::ReadFrom(reader); 2625 decl->function_ = FunctionNode::ReadFrom(reader);
2593 return decl; 2626 return decl;
2594 } 2627 }
2595 2628
2596 2629
2597 void FunctionDeclaration::WriteTo(Writer* writer) { 2630 void FunctionDeclaration::WriteTo(Writer* writer) {
2598 TRACE_WRITE_OFFSET(); 2631 TRACE_WRITE_OFFSET();
2599 writer->WriteTag(kFunctionDeclaration); 2632 writer->WriteTag(kFunctionDeclaration);
2633 writer->WritePosition(position_);
2600 variable_->WriteToImpl(writer); 2634 variable_->WriteToImpl(writer);
2601 VariableScope<WriterHelper> parameters(writer->helper()); 2635 VariableScope<WriterHelper> parameters(writer->helper());
2602 function_->WriteTo(writer); 2636 function_->WriteTo(writer);
2603 } 2637 }
2604 2638
2605 2639
2606 Name* Name::ReadFrom(Reader* reader) { 2640 Name* Name::ReadFrom(Reader* reader) {
2607 String* string = Reference::ReadStringFrom(reader); 2641 String* string = Reference::ReadStringFrom(reader);
2608 if (string->size() >= 1 && string->buffer()[0] == '_') { 2642 if (string->size() >= 1 && string->buffer()[0] == '_') {
2609 int lib_index = reader->ReadUInt(); 2643 int lib_index = reader->ReadUInt();
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
2842 libraries_.WriteTo(writer); 2876 libraries_.WriteTo(writer);
2843 Reference::WriteMemberTo(writer, main_method_); 2877 Reference::WriteMemberTo(writer, main_method_);
2844 } 2878 }
2845 2879
2846 2880
2847 FunctionNode* FunctionNode::ReadFrom(Reader* reader) { 2881 FunctionNode* FunctionNode::ReadFrom(Reader* reader) {
2848 TRACE_READ_OFFSET(); 2882 TRACE_READ_OFFSET();
2849 TypeParameterScope<ReaderHelper> scope(reader->helper()); 2883 TypeParameterScope<ReaderHelper> scope(reader->helper());
2850 2884
2851 FunctionNode* function = new FunctionNode(); 2885 FunctionNode* function = new FunctionNode();
2886 function->position_ = reader->ReadPosition();
2887 function->end_position_ = reader->ReadPosition();
2852 function->async_marker_ = 2888 function->async_marker_ =
2853 static_cast<FunctionNode::AsyncMarker>(reader->ReadByte()); 2889 static_cast<FunctionNode::AsyncMarker>(reader->ReadByte());
2890 function->debuggable_ = reader->ReadByte() == 1 ? true : false;
2854 function->type_parameters().ReadFrom(reader); 2891 function->type_parameters().ReadFrom(reader);
2855 function->required_parameter_count_ = reader->ReadUInt(); 2892 function->required_parameter_count_ = reader->ReadUInt();
2856 function->positional_parameters().ReadFromStatic<VariableDeclarationImpl>( 2893 function->positional_parameters().ReadFromStatic<VariableDeclarationImpl>(
2857 reader); 2894 reader);
2858 function->named_parameters().ReadFromStatic<VariableDeclarationImpl>(reader); 2895 function->named_parameters().ReadFromStatic<VariableDeclarationImpl>(reader);
2859 function->return_type_ = DartType::ReadFrom(reader); 2896 function->return_type_ = DartType::ReadFrom(reader);
2860 function->inferred_return_value_ = reader->ReadOptional<InferredValue>(); 2897 function->inferred_return_value_ = reader->ReadOptional<InferredValue>();
2861 2898
2862 LabelScope<ReaderHelper, BlockStack<LabeledStatement> > labels( 2899 LabelScope<ReaderHelper, BlockStack<LabeledStatement> > labels(
2863 reader->helper()); 2900 reader->helper());
2864 VariableScope<ReaderHelper> vars(reader->helper()); 2901 VariableScope<ReaderHelper> vars(reader->helper());
2865 function->body_ = reader->ReadOptional<Statement>(); 2902 function->body_ = reader->ReadOptional<Statement>();
2866 return function; 2903 return function;
2867 } 2904 }
2868 2905
2869 2906
2870 void FunctionNode::WriteTo(Writer* writer) { 2907 void FunctionNode::WriteTo(Writer* writer) {
2871 TRACE_WRITE_OFFSET(); 2908 TRACE_WRITE_OFFSET();
2872 TypeParameterScope<WriterHelper> scope(writer->helper()); 2909 TypeParameterScope<WriterHelper> scope(writer->helper());
2873 2910
2911 writer->WritePosition(position_);
2912 writer->WritePosition(end_position_);
2874 writer->WriteByte(static_cast<uint8_t>(async_marker_)); 2913 writer->WriteByte(static_cast<uint8_t>(async_marker_));
2914 writer->WriteByte(debuggable_ ? 1 : 0);
2875 type_parameters().WriteTo(writer); 2915 type_parameters().WriteTo(writer);
2876 writer->WriteUInt(required_parameter_count()); 2916 writer->WriteUInt(required_parameter_count());
2877 positional_parameters().WriteToStatic<VariableDeclarationImpl>(writer); 2917 positional_parameters().WriteToStatic<VariableDeclarationImpl>(writer);
2878 named_parameters().WriteToStatic<VariableDeclarationImpl>(writer); 2918 named_parameters().WriteToStatic<VariableDeclarationImpl>(writer);
2879 return_type_->WriteTo(writer); 2919 return_type_->WriteTo(writer);
2880 writer->WriteOptional<InferredValue>(inferred_return_value_); 2920 writer->WriteOptional<InferredValue>(inferred_return_value_);
2881 2921
2882 LabelScope<WriterHelper, BlockMap<LabeledStatement> > labels( 2922 LabelScope<WriterHelper, BlockMap<LabeledStatement> > labels(
2883 writer->helper()); 2923 writer->helper());
2884 VariableScope<WriterHelper> vars(writer->helper()); 2924 VariableScope<WriterHelper> vars(writer->helper());
(...skipping 29 matching lines...) Expand all
2914 void WritePrecompiledKernel(ByteWriter* byte_writer, kernel::Program* program) { 2954 void WritePrecompiledKernel(ByteWriter* byte_writer, kernel::Program* program) {
2915 ASSERT(byte_writer != NULL); 2955 ASSERT(byte_writer != NULL);
2916 2956
2917 kernel::Writer writer(byte_writer); 2957 kernel::Writer writer(byte_writer);
2918 program->WriteTo(&writer); 2958 program->WriteTo(&writer);
2919 } 2959 }
2920 2960
2921 2961
2922 } // namespace dart 2962 } // namespace dart
2923 #endif // !defined(DART_PRECOMPILED_RUNTIME) 2963 #endif // !defined(DART_PRECOMPILED_RUNTIME)
OLDNEW
« no previous file with comments | « runtime/vm/kernel.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698