| OLD | NEW | 
|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. | 
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without | 
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are | 
| 4 // met: | 4 // met: | 
| 5 // | 5 // | 
| 6 //     * Redistributions of source code must retain the above copyright | 6 //     * Redistributions of source code must retain the above copyright | 
| 7 //       notice, this list of conditions and the following disclaimer. | 7 //       notice, this list of conditions and the following disclaimer. | 
| 8 //     * Redistributions in binary form must reproduce the above | 8 //     * Redistributions in binary form must reproduce the above | 
| 9 //       copyright notice, this list of conditions and the following | 9 //       copyright notice, this list of conditions and the following | 
| 10 //       disclaimer in the documentation and/or other materials provided | 10 //       disclaimer in the documentation and/or other materials provided | 
| (...skipping 771 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 782 void Deserializer::Deserialize(Isolate* isolate) { | 782 void Deserializer::Deserialize(Isolate* isolate) { | 
| 783   isolate_ = isolate; | 783   isolate_ = isolate; | 
| 784   ASSERT(isolate_ != NULL); | 784   ASSERT(isolate_ != NULL); | 
| 785   isolate_->heap()->ReserveSpace(reservations_, &high_water_[0]); | 785   isolate_->heap()->ReserveSpace(reservations_, &high_water_[0]); | 
| 786   // No active threads. | 786   // No active threads. | 
| 787   ASSERT_EQ(NULL, isolate_->thread_manager()->FirstThreadStateInUse()); | 787   ASSERT_EQ(NULL, isolate_->thread_manager()->FirstThreadStateInUse()); | 
| 788   // No active handles. | 788   // No active handles. | 
| 789   ASSERT(isolate_->handle_scope_implementer()->blocks()->is_empty()); | 789   ASSERT(isolate_->handle_scope_implementer()->blocks()->is_empty()); | 
| 790   ASSERT_EQ(NULL, external_reference_decoder_); | 790   ASSERT_EQ(NULL, external_reference_decoder_); | 
| 791   external_reference_decoder_ = new ExternalReferenceDecoder(isolate); | 791   external_reference_decoder_ = new ExternalReferenceDecoder(isolate); | 
|  | 792   isolate_->heap()->IterateSmiRoots(this); | 
| 792   isolate_->heap()->IterateStrongRoots(this, VISIT_ONLY_STRONG); | 793   isolate_->heap()->IterateStrongRoots(this, VISIT_ONLY_STRONG); | 
| 793   isolate_->heap()->RepairFreeListsAfterBoot(); | 794   isolate_->heap()->RepairFreeListsAfterBoot(); | 
| 794   isolate_->heap()->IterateWeakRoots(this, VISIT_ALL); | 795   isolate_->heap()->IterateWeakRoots(this, VISIT_ALL); | 
| 795 | 796 | 
| 796   isolate_->heap()->set_native_contexts_list( | 797   isolate_->heap()->set_native_contexts_list( | 
| 797       isolate_->heap()->undefined_value()); | 798       isolate_->heap()->undefined_value()); | 
| 798   isolate_->heap()->set_array_buffers_list( | 799   isolate_->heap()->set_array_buffers_list( | 
| 799       isolate_->heap()->undefined_value()); | 800       isolate_->heap()->undefined_value()); | 
| 800 | 801 | 
| 801   // The allocation site list is build during root iteration, but if no sites | 802   // The allocation site list is build during root iteration, but if no sites | 
| (...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1246   integer |= bytes; | 1247   integer |= bytes; | 
| 1247   Put(static_cast<int>(integer & 0xff), "IntPart1"); | 1248   Put(static_cast<int>(integer & 0xff), "IntPart1"); | 
| 1248   if (bytes > 1) Put(static_cast<int>((integer >> 8) & 0xff), "IntPart2"); | 1249   if (bytes > 1) Put(static_cast<int>((integer >> 8) & 0xff), "IntPart2"); | 
| 1249   if (bytes > 2) Put(static_cast<int>((integer >> 16) & 0xff), "IntPart3"); | 1250   if (bytes > 2) Put(static_cast<int>((integer >> 16) & 0xff), "IntPart3"); | 
| 1250 } | 1251 } | 
| 1251 | 1252 | 
| 1252 | 1253 | 
| 1253 Serializer::Serializer(Isolate* isolate, SnapshotByteSink* sink) | 1254 Serializer::Serializer(Isolate* isolate, SnapshotByteSink* sink) | 
| 1254     : isolate_(isolate), | 1255     : isolate_(isolate), | 
| 1255       sink_(sink), | 1256       sink_(sink), | 
| 1256       current_root_index_(0), |  | 
| 1257       external_reference_encoder_(new ExternalReferenceEncoder(isolate)), | 1257       external_reference_encoder_(new ExternalReferenceEncoder(isolate)), | 
| 1258       root_index_wave_front_(0) { | 1258       root_index_wave_front_(0) { | 
| 1259   // The serializer is meant to be used only to generate initial heap images | 1259   // The serializer is meant to be used only to generate initial heap images | 
| 1260   // from a context in which there is only one isolate. | 1260   // from a context in which there is only one isolate. | 
| 1261   for (int i = 0; i <= LAST_SPACE; i++) { | 1261   for (int i = 0; i <= LAST_SPACE; i++) { | 
| 1262     fullness_[i] = 0; | 1262     fullness_[i] = 0; | 
| 1263   } | 1263   } | 
| 1264 } | 1264 } | 
| 1265 | 1265 | 
| 1266 | 1266 | 
| 1267 Serializer::~Serializer() { | 1267 Serializer::~Serializer() { | 
| 1268   delete external_reference_encoder_; | 1268   delete external_reference_encoder_; | 
| 1269 } | 1269 } | 
| 1270 | 1270 | 
| 1271 | 1271 | 
| 1272 void StartupSerializer::SerializeStrongReferences() { | 1272 void StartupSerializer::SerializeStrongReferences() { | 
| 1273   Isolate* isolate = this->isolate(); | 1273   Isolate* isolate = this->isolate(); | 
| 1274   // No active threads. | 1274   // No active threads. | 
| 1275   CHECK_EQ(NULL, isolate->thread_manager()->FirstThreadStateInUse()); | 1275   CHECK_EQ(NULL, isolate->thread_manager()->FirstThreadStateInUse()); | 
| 1276   // No active or weak handles. | 1276   // No active or weak handles. | 
| 1277   CHECK(isolate->handle_scope_implementer()->blocks()->is_empty()); | 1277   CHECK(isolate->handle_scope_implementer()->blocks()->is_empty()); | 
| 1278   CHECK_EQ(0, isolate->global_handles()->NumberOfWeakHandles()); | 1278   CHECK_EQ(0, isolate->global_handles()->NumberOfWeakHandles()); | 
| 1279   CHECK_EQ(0, isolate->eternal_handles()->NumberOfHandles()); | 1279   CHECK_EQ(0, isolate->eternal_handles()->NumberOfHandles()); | 
| 1280   // We don't support serializing installed extensions. | 1280   // We don't support serializing installed extensions. | 
| 1281   CHECK(!isolate->has_installed_extensions()); | 1281   CHECK(!isolate->has_installed_extensions()); | 
| 1282 | 1282   isolate->heap()->IterateSmiRoots(this); | 
| 1283   isolate->heap()->IterateStrongRoots(this, VISIT_ONLY_STRONG); | 1283   isolate->heap()->IterateStrongRoots(this, VISIT_ONLY_STRONG); | 
| 1284 } | 1284 } | 
| 1285 | 1285 | 
| 1286 | 1286 | 
| 1287 void PartialSerializer::Serialize(Object** object) { | 1287 void PartialSerializer::Serialize(Object** object) { | 
| 1288   this->VisitPointer(object); | 1288   this->VisitPointer(object); | 
| 1289   Pad(); | 1289   Pad(); | 
| 1290 } | 1290 } | 
| 1291 | 1291 | 
| 1292 | 1292 | 
| (...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1848 | 1848 | 
| 1849 bool SnapshotByteSource::AtEOF() { | 1849 bool SnapshotByteSource::AtEOF() { | 
| 1850   if (0u + length_ - position_ > 2 * sizeof(uint32_t)) return false; | 1850   if (0u + length_ - position_ > 2 * sizeof(uint32_t)) return false; | 
| 1851   for (int x = position_; x < length_; x++) { | 1851   for (int x = position_; x < length_; x++) { | 
| 1852     if (data_[x] != SerializerDeserializer::nop()) return false; | 1852     if (data_[x] != SerializerDeserializer::nop()) return false; | 
| 1853   } | 1853   } | 
| 1854   return true; | 1854   return true; | 
| 1855 } | 1855 } | 
| 1856 | 1856 | 
| 1857 } }  // namespace v8::internal | 1857 } }  // namespace v8::internal | 
| OLD | NEW | 
|---|