| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 "bootstrapper.h" | 5 #include "bootstrapper.h" |
| 6 | 6 |
| 7 #include "accessors.h" | 7 #include "accessors.h" |
| 8 #include "isolate-inl.h" | 8 #include "isolate-inl.h" |
| 9 #include "natives.h" | 9 #include "natives.h" |
| 10 #include "snapshot.h" | 10 #include "snapshot.h" |
| (...skipping 2504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2515 native_context()->set_sloppy_function_map( | 2515 native_context()->set_sloppy_function_map( |
| 2516 *sloppy_function_map_writable_prototype_); | 2516 *sloppy_function_map_writable_prototype_); |
| 2517 native_context()->set_strict_function_map( | 2517 native_context()->set_strict_function_map( |
| 2518 *strict_function_map_writable_prototype_); | 2518 *strict_function_map_writable_prototype_); |
| 2519 } | 2519 } |
| 2520 | 2520 |
| 2521 | 2521 |
| 2522 class NoTrackDoubleFieldsForSerializerScope { | 2522 class NoTrackDoubleFieldsForSerializerScope { |
| 2523 public: | 2523 public: |
| 2524 explicit NoTrackDoubleFieldsForSerializerScope(Isolate* isolate) | 2524 explicit NoTrackDoubleFieldsForSerializerScope(Isolate* isolate) |
| 2525 : isolate_(isolate), flag_(FLAG_track_double_fields) { | 2525 : flag_(FLAG_track_double_fields) { |
| 2526 if (Serializer::enabled(isolate)) { | 2526 if (isolate->serializer_enabled()) { |
| 2527 // Disable tracking double fields because heap numbers treated as | 2527 // Disable tracking double fields because heap numbers treated as |
| 2528 // immutable by the serializer. | 2528 // immutable by the serializer. |
| 2529 FLAG_track_double_fields = false; | 2529 FLAG_track_double_fields = false; |
| 2530 } | 2530 } |
| 2531 } | 2531 } |
| 2532 | 2532 |
| 2533 ~NoTrackDoubleFieldsForSerializerScope() { | 2533 ~NoTrackDoubleFieldsForSerializerScope() { |
| 2534 if (Serializer::enabled(isolate_)) { | 2534 FLAG_track_double_fields = flag_; |
| 2535 FLAG_track_double_fields = flag_; | |
| 2536 } | |
| 2537 } | 2535 } |
| 2538 | 2536 |
| 2539 private: | 2537 private: |
| 2540 Isolate* isolate_; | |
| 2541 bool flag_; | 2538 bool flag_; |
| 2542 }; | 2539 }; |
| 2543 | 2540 |
| 2544 | 2541 |
| 2545 Genesis::Genesis(Isolate* isolate, | 2542 Genesis::Genesis(Isolate* isolate, |
| 2546 Handle<Object> global_object, | 2543 Handle<Object> global_object, |
| 2547 v8::Handle<v8::ObjectTemplate> global_template, | 2544 v8::Handle<v8::ObjectTemplate> global_template, |
| 2548 v8::ExtensionConfiguration* extensions) | 2545 v8::ExtensionConfiguration* extensions) |
| 2549 : isolate_(isolate), | 2546 : isolate_(isolate), |
| 2550 active_(isolate->bootstrapper()) { | 2547 active_(isolate->bootstrapper()) { |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2607 isolate->counters()->contexts_created_from_scratch()->Increment(); | 2604 isolate->counters()->contexts_created_from_scratch()->Increment(); |
| 2608 } | 2605 } |
| 2609 | 2606 |
| 2610 // Initialize experimental globals and install experimental natives. | 2607 // Initialize experimental globals and install experimental natives. |
| 2611 InitializeExperimentalGlobal(); | 2608 InitializeExperimentalGlobal(); |
| 2612 if (!InstallExperimentalNatives()) return; | 2609 if (!InstallExperimentalNatives()) return; |
| 2613 | 2610 |
| 2614 // We can't (de-)serialize typed arrays currently, but we are lucky: The state | 2611 // We can't (de-)serialize typed arrays currently, but we are lucky: The state |
| 2615 // of the random number generator needs no initialization during snapshot | 2612 // of the random number generator needs no initialization during snapshot |
| 2616 // creation time and we don't need trigonometric functions then. | 2613 // creation time and we don't need trigonometric functions then. |
| 2617 if (!Serializer::enabled(isolate)) { | 2614 if (!isolate->serializer_enabled()) { |
| 2618 // Initially seed the per-context random number generator using the | 2615 // Initially seed the per-context random number generator using the |
| 2619 // per-isolate random number generator. | 2616 // per-isolate random number generator. |
| 2620 const int num_elems = 2; | 2617 const int num_elems = 2; |
| 2621 const int num_bytes = num_elems * sizeof(uint32_t); | 2618 const int num_bytes = num_elems * sizeof(uint32_t); |
| 2622 uint32_t* state = reinterpret_cast<uint32_t*>(malloc(num_bytes)); | 2619 uint32_t* state = reinterpret_cast<uint32_t*>(malloc(num_bytes)); |
| 2623 | 2620 |
| 2624 do { | 2621 do { |
| 2625 isolate->random_number_generator()->NextBytes(state, num_bytes); | 2622 isolate->random_number_generator()->NextBytes(state, num_bytes); |
| 2626 } while (state[0] == 0 || state[1] == 0); | 2623 } while (state[0] == 0 || state[1] == 0); |
| 2627 | 2624 |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2702 return from + sizeof(NestingCounterType); | 2699 return from + sizeof(NestingCounterType); |
| 2703 } | 2700 } |
| 2704 | 2701 |
| 2705 | 2702 |
| 2706 // Called when the top-level V8 mutex is destroyed. | 2703 // Called when the top-level V8 mutex is destroyed. |
| 2707 void Bootstrapper::FreeThreadResources() { | 2704 void Bootstrapper::FreeThreadResources() { |
| 2708 ASSERT(!IsActive()); | 2705 ASSERT(!IsActive()); |
| 2709 } | 2706 } |
| 2710 | 2707 |
| 2711 } } // namespace v8::internal | 2708 } } // namespace v8::internal |
| OLD | NEW |