OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/api.h" | 8 #include "src/api.h" |
9 #include "src/base/platform/platform.h" | 9 #include "src/base/platform/platform.h" |
10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" |
(...skipping 2621 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2632 | 2632 |
2633 // Copy serialized data. | 2633 // Copy serialized data. |
2634 CopyBytes(data_ + padded_payload_offset, payload.begin(), | 2634 CopyBytes(data_ + padded_payload_offset, payload.begin(), |
2635 static_cast<size_t>(payload.length())); | 2635 static_cast<size_t>(payload.length())); |
2636 } | 2636 } |
2637 | 2637 |
2638 | 2638 |
2639 SerializedCodeData::SanityCheckResult SerializedCodeData::SanityCheck( | 2639 SerializedCodeData::SanityCheckResult SerializedCodeData::SanityCheck( |
2640 Isolate* isolate, String* source) const { | 2640 Isolate* isolate, String* source) const { |
2641 uint32_t magic_number = GetMagicNumber(); | 2641 uint32_t magic_number = GetMagicNumber(); |
| 2642 if (magic_number != ComputeMagicNumber(isolate)) return MAGIC_NUMBER_MISMATCH; |
2642 uint32_t version_hash = GetHeaderValue(kVersionHashOffset); | 2643 uint32_t version_hash = GetHeaderValue(kVersionHashOffset); |
2643 uint32_t source_hash = GetHeaderValue(kSourceHashOffset); | 2644 uint32_t source_hash = GetHeaderValue(kSourceHashOffset); |
2644 uint32_t cpu_features = GetHeaderValue(kCpuFeaturesOffset); | 2645 uint32_t cpu_features = GetHeaderValue(kCpuFeaturesOffset); |
2645 uint32_t flags_hash = GetHeaderValue(kFlagHashOffset); | 2646 uint32_t flags_hash = GetHeaderValue(kFlagHashOffset); |
2646 uint32_t c1 = GetHeaderValue(kChecksum1Offset); | 2647 uint32_t c1 = GetHeaderValue(kChecksum1Offset); |
2647 uint32_t c2 = GetHeaderValue(kChecksum2Offset); | 2648 uint32_t c2 = GetHeaderValue(kChecksum2Offset); |
2648 if (magic_number != ComputeMagicNumber(isolate)) return MAGIC_NUMBER_MISMATCH; | |
2649 if (version_hash != Version::Hash()) return VERSION_MISMATCH; | 2649 if (version_hash != Version::Hash()) return VERSION_MISMATCH; |
2650 if (source_hash != SourceHash(source)) return SOURCE_MISMATCH; | 2650 if (source_hash != SourceHash(source)) return SOURCE_MISMATCH; |
2651 if (cpu_features != static_cast<uint32_t>(CpuFeatures::SupportedFeatures())) { | 2651 if (cpu_features != static_cast<uint32_t>(CpuFeatures::SupportedFeatures())) { |
2652 return CPU_FEATURES_MISMATCH; | 2652 return CPU_FEATURES_MISMATCH; |
2653 } | 2653 } |
2654 if (flags_hash != FlagList::Hash()) return FLAGS_MISMATCH; | 2654 if (flags_hash != FlagList::Hash()) return FLAGS_MISMATCH; |
2655 if (!Checksum(Payload()).Check(c1, c2)) return CHECKSUM_MISMATCH; | 2655 if (!Checksum(Payload()).Check(c1, c2)) return CHECKSUM_MISMATCH; |
2656 return CHECK_SUCCESS; | 2656 return CHECK_SUCCESS; |
2657 } | 2657 } |
2658 | 2658 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2712 SerializedCodeData* scd = new SerializedCodeData(cached_data); | 2712 SerializedCodeData* scd = new SerializedCodeData(cached_data); |
2713 SanityCheckResult r = scd->SanityCheck(isolate, source); | 2713 SanityCheckResult r = scd->SanityCheck(isolate, source); |
2714 if (r == CHECK_SUCCESS) return scd; | 2714 if (r == CHECK_SUCCESS) return scd; |
2715 cached_data->Reject(); | 2715 cached_data->Reject(); |
2716 source->GetIsolate()->counters()->code_cache_reject_reason()->AddSample(r); | 2716 source->GetIsolate()->counters()->code_cache_reject_reason()->AddSample(r); |
2717 delete scd; | 2717 delete scd; |
2718 return NULL; | 2718 return NULL; |
2719 } | 2719 } |
2720 } // namespace internal | 2720 } // namespace internal |
2721 } // namespace v8 | 2721 } // namespace v8 |
OLD | NEW |