| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 | 4 |
| 5 #include "vm/native_entry.h" |
| 5 #include "vm/object.h" | 6 #include "vm/object.h" |
| 6 #include "vm/object_store.h" | 7 #include "vm/object_store.h" |
| 7 #include "vm/snapshot.h" | 8 #include "vm/snapshot.h" |
| 8 #include "vm/stub_code.h" | 9 #include "vm/stub_code.h" |
| 9 #include "vm/symbols.h" | 10 #include "vm/symbols.h" |
| 10 #include "vm/visitor.h" | 11 #include "vm/visitor.h" |
| 11 | 12 |
| 12 namespace dart { | 13 namespace dart { |
| 13 | 14 |
| 14 DECLARE_FLAG(int, optimization_counter_threshold); | 15 DECLARE_FLAG(int, optimization_counter_threshold); |
| (...skipping 1256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1271 intptr_t raw_value = reader->Read<intptr_t>(); | 1272 intptr_t raw_value = reader->Read<intptr_t>(); |
| 1272 result.SetRawValueAt(i, raw_value); | 1273 result.SetRawValueAt(i, raw_value); |
| 1273 break; | 1274 break; |
| 1274 } | 1275 } |
| 1275 case ObjectPool::kExternalLabel: { | 1276 case ObjectPool::kExternalLabel: { |
| 1276 // TODO(rmacnak): Relocate. | 1277 // TODO(rmacnak): Relocate. |
| 1277 intptr_t raw_value = reader->Read<intptr_t>(); | 1278 intptr_t raw_value = reader->Read<intptr_t>(); |
| 1278 result.SetRawValueAt(i, raw_value); | 1279 result.SetRawValueAt(i, raw_value); |
| 1279 break; | 1280 break; |
| 1280 } | 1281 } |
| 1282 case ObjectPool::kNativeEntry: { |
| 1283 // Read nothing. Initialize with the lazy link entry. |
| 1284 uword entry = reinterpret_cast<uword>(&NativeEntry::LinkNativeCall); |
| 1285 #if defined(USING_SIMULATOR) |
| 1286 entry = Simulator::RedirectExternalReference( |
| 1287 entry, Simulator::kBootstrapNativeCall, NativeEntry::kNumArguments); |
| 1288 #endif |
| 1289 result.SetRawValueAt(i, entry); |
| 1290 break; |
| 1291 } |
| 1281 default: | 1292 default: |
| 1282 UNREACHABLE(); | 1293 UNREACHABLE(); |
| 1283 } | 1294 } |
| 1284 } | 1295 } |
| 1285 | 1296 |
| 1286 return result.raw(); | 1297 return result.raw(); |
| 1287 } | 1298 } |
| 1288 | 1299 |
| 1289 | 1300 |
| 1290 void RawObjectPool::WriteTo(SnapshotWriter* writer, | 1301 void RawObjectPool::WriteTo(SnapshotWriter* writer, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1314 case ObjectPool::kTaggedObject: | 1325 case ObjectPool::kTaggedObject: |
| 1315 writer->WriteObjectImpl(entry.raw_obj_, kAsReference); | 1326 writer->WriteObjectImpl(entry.raw_obj_, kAsReference); |
| 1316 break; | 1327 break; |
| 1317 case ObjectPool::kImmediate: | 1328 case ObjectPool::kImmediate: |
| 1318 writer->Write<intptr_t>(entry.raw_value_); | 1329 writer->Write<intptr_t>(entry.raw_value_); |
| 1319 break; | 1330 break; |
| 1320 case ObjectPool::kExternalLabel: | 1331 case ObjectPool::kExternalLabel: |
| 1321 // TODO(rmacnak): Write symbolically. | 1332 // TODO(rmacnak): Write symbolically. |
| 1322 writer->Write<intptr_t>(entry.raw_value_); | 1333 writer->Write<intptr_t>(entry.raw_value_); |
| 1323 break; | 1334 break; |
| 1335 case ObjectPool::kNativeEntry: |
| 1336 // Write nothing. Will initialize with the lazy link entry. |
| 1337 break; |
| 1324 default: | 1338 default: |
| 1325 UNREACHABLE(); | 1339 UNREACHABLE(); |
| 1326 } | 1340 } |
| 1327 } | 1341 } |
| 1328 } | 1342 } |
| 1329 | 1343 |
| 1330 | 1344 |
| 1331 RawPcDescriptors* PcDescriptors::ReadFrom(SnapshotReader* reader, | 1345 RawPcDescriptors* PcDescriptors::ReadFrom(SnapshotReader* reader, |
| 1332 intptr_t object_id, | 1346 intptr_t object_id, |
| 1333 intptr_t tags, | 1347 intptr_t tags, |
| (...skipping 1898 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3232 // We do not allow objects with native fields in an isolate message. | 3246 // We do not allow objects with native fields in an isolate message. |
| 3233 writer->SetWriteException(Exceptions::kArgument, | 3247 writer->SetWriteException(Exceptions::kArgument, |
| 3234 "Illegal argument in isolate message" | 3248 "Illegal argument in isolate message" |
| 3235 " : (object is a UserTag)"); | 3249 " : (object is a UserTag)"); |
| 3236 } else { | 3250 } else { |
| 3237 UNREACHABLE(); | 3251 UNREACHABLE(); |
| 3238 } | 3252 } |
| 3239 } | 3253 } |
| 3240 | 3254 |
| 3241 } // namespace dart | 3255 } // namespace dart |
| OLD | NEW |