| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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 #include "src/snapshot/serializer.h" | 5 #include "src/snapshot/serializer.h" |
| 6 | 6 |
| 7 #include "src/macro-assembler.h" | 7 #include "src/macro-assembler.h" |
| 8 #include "src/snapshot/natives.h" | 8 #include "src/snapshot/natives.h" |
| 9 | 9 |
| 10 namespace v8 { | 10 namespace v8 { |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 void Serializer::PutRoot(int root_index, HeapObject* object, | 205 void Serializer::PutRoot(int root_index, HeapObject* object, |
| 206 SerializerDeserializer::HowToCode how_to_code, | 206 SerializerDeserializer::HowToCode how_to_code, |
| 207 SerializerDeserializer::WhereToPoint where_to_point, | 207 SerializerDeserializer::WhereToPoint where_to_point, |
| 208 int skip) { | 208 int skip) { |
| 209 if (FLAG_trace_serializer) { | 209 if (FLAG_trace_serializer) { |
| 210 PrintF(" Encoding root %d:", root_index); | 210 PrintF(" Encoding root %d:", root_index); |
| 211 object->ShortPrint(); | 211 object->ShortPrint(); |
| 212 PrintF("\n"); | 212 PrintF("\n"); |
| 213 } | 213 } |
| 214 | 214 |
| 215 // Assert that the first 32 root array items are a conscious choice. They are |
| 216 // chosen so that the most common ones can be encoded more efficiently. |
| 217 STATIC_ASSERT(Heap::kEmptyDescriptorArrayRootIndex == |
| 218 kNumberOfRootArrayConstants - 1); |
| 219 |
| 215 if (how_to_code == kPlain && where_to_point == kStartOfObject && | 220 if (how_to_code == kPlain && where_to_point == kStartOfObject && |
| 216 root_index < kNumberOfRootArrayConstants && | 221 root_index < kNumberOfRootArrayConstants && |
| 217 !isolate()->heap()->InNewSpace(object)) { | 222 !isolate()->heap()->InNewSpace(object)) { |
| 218 if (skip == 0) { | 223 if (skip == 0) { |
| 219 sink_.Put(kRootArrayConstants + root_index, "RootConstant"); | 224 sink_.Put(kRootArrayConstants + root_index, "RootConstant"); |
| 220 } else { | 225 } else { |
| 221 sink_.Put(kRootArrayConstantsWithSkip + root_index, "RootConstant"); | 226 sink_.Put(kRootArrayConstantsWithSkip + root_index, "RootConstant"); |
| 222 sink_.PutInt(skip, "SkipInPutRoot"); | 227 sink_.PutInt(skip, "SkipInPutRoot"); |
| 223 } | 228 } |
| 224 } else { | 229 } else { |
| (...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 790 if (to_skip != 0 && return_skip == kIgnoringReturn) { | 795 if (to_skip != 0 && return_skip == kIgnoringReturn) { |
| 791 sink_->Put(kSkip, "Skip"); | 796 sink_->Put(kSkip, "Skip"); |
| 792 sink_->PutInt(to_skip, "SkipDistance"); | 797 sink_->PutInt(to_skip, "SkipDistance"); |
| 793 to_skip = 0; | 798 to_skip = 0; |
| 794 } | 799 } |
| 795 return to_skip; | 800 return to_skip; |
| 796 } | 801 } |
| 797 | 802 |
| 798 } // namespace internal | 803 } // namespace internal |
| 799 } // namespace v8 | 804 } // namespace v8 |
| OLD | NEW |