OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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) |
OLD | NEW |