| OLD | NEW | 
|    1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |    1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 #ifndef V8_SNAPSHOT_SNAPSHOT_H_ |    5 #ifndef V8_SNAPSHOT_SNAPSHOT_H_ | 
|    6 #define V8_SNAPSHOT_SNAPSHOT_H_ |    6 #define V8_SNAPSHOT_SNAPSHOT_H_ | 
|    7  |    7  | 
|    8 #include "src/snapshot/partial-serializer.h" |    8 #include "src/snapshot/partial-serializer.h" | 
|    9 #include "src/snapshot/startup-serializer.h" |    9 #include "src/snapshot/startup-serializer.h" | 
|   10  |   10  | 
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   60   static MaybeHandle<Context> NewContextFromSnapshot( |   60   static MaybeHandle<Context> NewContextFromSnapshot( | 
|   61       Isolate* isolate, Handle<JSGlobalProxy> global_proxy, |   61       Isolate* isolate, Handle<JSGlobalProxy> global_proxy, | 
|   62       size_t context_index); |   62       size_t context_index); | 
|   63  |   63  | 
|   64   static bool HaveASnapshotToStartFrom(Isolate* isolate); |   64   static bool HaveASnapshotToStartFrom(Isolate* isolate); | 
|   65  |   65  | 
|   66   static bool HasContextSnapshot(Isolate* isolate, size_t index); |   66   static bool HasContextSnapshot(Isolate* isolate, size_t index); | 
|   67  |   67  | 
|   68   static bool EmbedsScript(Isolate* isolate); |   68   static bool EmbedsScript(Isolate* isolate); | 
|   69  |   69  | 
 |   70   static uint32_t SizeOfFirstPage(Isolate* isolate, AllocationSpace space); | 
 |   71  | 
 |   72  | 
|   70   // To be implemented by the snapshot source. |   73   // To be implemented by the snapshot source. | 
|   71   static const v8::StartupData* DefaultSnapshotBlob(); |   74   static const v8::StartupData* DefaultSnapshotBlob(); | 
|   72  |   75  | 
|   73   static v8::StartupData CreateSnapshotBlob( |   76   static v8::StartupData CreateSnapshotBlob( | 
|   74       const SnapshotData* startup_snapshot, |   77       const SnapshotData* startup_snapshot, | 
|   75       const List<SnapshotData*>* context_snapshots); |   78       const List<SnapshotData*>* context_snapshots); | 
|   76  |   79  | 
|   77 #ifdef DEBUG |   80 #ifdef DEBUG | 
|   78   static bool SnapshotIsValid(v8::StartupData* snapshot_blob); |   81   static bool SnapshotIsValid(v8::StartupData* snapshot_blob); | 
|   79 #endif  // DEBUG |   82 #endif  // DEBUG | 
|   80  |   83  | 
|   81  private: |   84  private: | 
|   82   static int ExtractNumContexts(const v8::StartupData* data); |   85   static int ExtractNumContexts(const v8::StartupData* data); | 
|   83   static Vector<const byte> ExtractStartupData(const v8::StartupData* data); |   86   static Vector<const byte> ExtractStartupData(const v8::StartupData* data); | 
|   84   static Vector<const byte> ExtractContextData(const v8::StartupData* data, |   87   static Vector<const byte> ExtractContextData(const v8::StartupData* data, | 
|   85                                                int index); |   88                                                int index); | 
|   86  |   89  | 
|   87   // Snapshot blob layout: |   90   // Snapshot blob layout: | 
|   88   // [0] number of contexts N |   91   // [0 - 5] pre-calculated first page sizes for paged spaces | 
|   89   // [1] offset to context 0 |   92   // [6] number of contexts N | 
|   90   // [2] offset to context 1 |   93   // [7] offset to context 0 | 
 |   94   // [8] offset to context 1 | 
|   91   // ... |   95   // ... | 
|   92   // ... offset to context N - 1 |   96   // ... offset to context N - 1 | 
|   93   // ... startup snapshot data |   97   // ... startup snapshot data | 
|   94   // ... context 0 snapshot data |   98   // ... context 0 snapshot data | 
|   95   // ... context 1 snapshot data |   99   // ... context 1 snapshot data | 
|   96  |  100  | 
|   97   static const int kNumberOfContextsOffset = 0; |  101   static const int kNumPagedSpaces = LAST_PAGED_SPACE - FIRST_PAGED_SPACE + 1; | 
 |  102  | 
 |  103   static const int kFirstPageSizesOffset = 0; | 
 |  104   static const int kNumberOfContextsOffset = | 
 |  105       kFirstPageSizesOffset + kNumPagedSpaces * kInt32Size; | 
|   98   static const int kFirstContextOffsetOffset = |  106   static const int kFirstContextOffsetOffset = | 
|   99       kNumberOfContextsOffset + kInt32Size; |  107       kNumberOfContextsOffset + kInt32Size; | 
|  100  |  108  | 
|  101   static int StartupSnapshotOffset(int num_contexts) { |  109   static int StartupSnapshotOffset(int num_contexts) { | 
|  102     return kFirstContextOffsetOffset + num_contexts * kInt32Size; |  110     return kFirstContextOffsetOffset + num_contexts * kInt32Size; | 
|  103   } |  111   } | 
|  104  |  112  | 
|  105   static int ContextSnapshotOffsetOffset(int index) { |  113   static int ContextSnapshotOffsetOffset(int index) { | 
|  106     return kFirstContextOffsetOffset + index * kInt32Size; |  114     return kFirstContextOffsetOffset + index * kInt32Size; | 
|  107   } |  115   } | 
|  108  |  116  | 
|  109   DISALLOW_IMPLICIT_CONSTRUCTORS(Snapshot); |  117   DISALLOW_IMPLICIT_CONSTRUCTORS(Snapshot); | 
|  110 }; |  118 }; | 
|  111  |  119  | 
|  112 #ifdef V8_USE_EXTERNAL_STARTUP_DATA |  120 #ifdef V8_USE_EXTERNAL_STARTUP_DATA | 
|  113 void SetSnapshotFromFile(StartupData* snapshot_blob); |  121 void SetSnapshotFromFile(StartupData* snapshot_blob); | 
|  114 #endif |  122 #endif | 
|  115  |  123  | 
|  116 }  // namespace internal |  124 }  // namespace internal | 
|  117 }  // namespace v8 |  125 }  // namespace v8 | 
|  118  |  126  | 
|  119 #endif  // V8_SNAPSHOT_SNAPSHOT_H_ |  127 #endif  // V8_SNAPSHOT_SNAPSHOT_H_ | 
| OLD | NEW |