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 2021 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2032 | 2032 |
2033 { // NOLINT | 2033 { // NOLINT |
2034 // Ensure that the thread has a valid stack guard. The v8::Locker object | 2034 // Ensure that the thread has a valid stack guard. The v8::Locker object |
2035 // will ensure this too, but we don't have to use lockers if we are only | 2035 // will ensure this too, but we don't have to use lockers if we are only |
2036 // using one thread. | 2036 // using one thread. |
2037 ExecutionAccess lock(this); | 2037 ExecutionAccess lock(this); |
2038 stack_guard_.InitThread(lock); | 2038 stack_guard_.InitThread(lock); |
2039 } | 2039 } |
2040 | 2040 |
2041 // SetUp the object heap. | 2041 // SetUp the object heap. |
| 2042 ASSERT(!heap_.HasBeenSetUp()); |
| 2043 if (!heap_.SetUp()) { |
| 2044 V8::FatalProcessOutOfMemory("heap setup"); |
| 2045 return false; |
| 2046 } |
| 2047 |
| 2048 deoptimizer_data_ = new DeoptimizerData; |
| 2049 |
2042 const bool create_heap_objects = (des == NULL); | 2050 const bool create_heap_objects = (des == NULL); |
2043 ASSERT(!heap_.HasBeenSetUp()); | 2051 if (create_heap_objects && !heap_.CreateHeapObjects()) { |
2044 if (!heap_.SetUp(create_heap_objects)) { | 2052 V8::FatalProcessOutOfMemory("heap object creation"); |
2045 V8::FatalProcessOutOfMemory("heap setup"); | |
2046 return false; | 2053 return false; |
2047 } | 2054 } |
2048 | 2055 |
2049 if (create_heap_objects) { | 2056 if (create_heap_objects) { |
2050 // Terminate the cache array with the sentinel so we can iterate. | 2057 // Terminate the cache array with the sentinel so we can iterate. |
2051 PushToPartialSnapshotCache(heap_.undefined_value()); | 2058 PushToPartialSnapshotCache(heap_.undefined_value()); |
2052 } | 2059 } |
2053 | 2060 |
2054 InitializeThreadLocal(); | 2061 InitializeThreadLocal(); |
2055 | 2062 |
(...skipping 13 matching lines...) Expand all Loading... |
2069 | 2076 |
2070 if (FLAG_preemption) { | 2077 if (FLAG_preemption) { |
2071 v8::Locker locker(reinterpret_cast<v8::Isolate*>(this)); | 2078 v8::Locker locker(reinterpret_cast<v8::Isolate*>(this)); |
2072 v8::Locker::StartPreemption(100); | 2079 v8::Locker::StartPreemption(100); |
2073 } | 2080 } |
2074 | 2081 |
2075 #ifdef ENABLE_DEBUGGER_SUPPORT | 2082 #ifdef ENABLE_DEBUGGER_SUPPORT |
2076 debug_->SetUp(create_heap_objects); | 2083 debug_->SetUp(create_heap_objects); |
2077 #endif | 2084 #endif |
2078 | 2085 |
2079 deoptimizer_data_ = new DeoptimizerData; | |
2080 | |
2081 // If we are deserializing, read the state into the now-empty heap. | 2086 // If we are deserializing, read the state into the now-empty heap. |
2082 if (!create_heap_objects) { | 2087 if (!create_heap_objects) { |
2083 des->Deserialize(); | 2088 des->Deserialize(); |
2084 } | 2089 } |
2085 stub_cache_->Initialize(); | 2090 stub_cache_->Initialize(); |
2086 | 2091 |
2087 // Finish initialization of ThreadLocal after deserialization is done. | 2092 // Finish initialization of ThreadLocal after deserialization is done. |
2088 clear_pending_exception(); | 2093 clear_pending_exception(); |
2089 clear_pending_message(); | 2094 clear_pending_message(); |
2090 clear_scheduled_exception(); | 2095 clear_scheduled_exception(); |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2279 | 2284 |
2280 #ifdef DEBUG | 2285 #ifdef DEBUG |
2281 #define ISOLATE_FIELD_OFFSET(type, name, ignored) \ | 2286 #define ISOLATE_FIELD_OFFSET(type, name, ignored) \ |
2282 const intptr_t Isolate::name##_debug_offset_ = OFFSET_OF(Isolate, name##_); | 2287 const intptr_t Isolate::name##_debug_offset_ = OFFSET_OF(Isolate, name##_); |
2283 ISOLATE_INIT_LIST(ISOLATE_FIELD_OFFSET) | 2288 ISOLATE_INIT_LIST(ISOLATE_FIELD_OFFSET) |
2284 ISOLATE_INIT_ARRAY_LIST(ISOLATE_FIELD_OFFSET) | 2289 ISOLATE_INIT_ARRAY_LIST(ISOLATE_FIELD_OFFSET) |
2285 #undef ISOLATE_FIELD_OFFSET | 2290 #undef ISOLATE_FIELD_OFFSET |
2286 #endif | 2291 #endif |
2287 | 2292 |
2288 } } // namespace v8::internal | 2293 } } // namespace v8::internal |
OLD | NEW |