diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2014-05-12 05:07:46 +0200 |
---|---|---|
committer | Fedor Indutny <fedor@indutny.com> | 2014-06-12 17:46:17 -0700 |
commit | 3a280b2034e3ea438cd3a2e7acd1a4cd40112ac5 (patch) | |
tree | ae194faf83fd22ad890b421c2ebd537db1a52534 /deps/v8/src/v8.cc | |
parent | 5413d9abe0df7e22bdb650a65f4c0ac462bbe147 (diff) | |
download | node-3a280b2034e3ea438cd3a2e7acd1a4cd40112ac5.tar.gz |
deps: upgrade v8 to 3.26.33
Signed-off-by: Fedor Indutny <fedor@indutny.com>
Diffstat (limited to 'deps/v8/src/v8.cc')
-rw-r--r-- | deps/v8/src/v8.cc | 120 |
1 files changed, 16 insertions, 104 deletions
diff --git a/deps/v8/src/v8.cc b/deps/v8/src/v8.cc index b49e0eb5f..f8156ecbd 100644 --- a/deps/v8/src/v8.cc +++ b/deps/v8/src/v8.cc @@ -1,29 +1,6 @@ // Copyright 2012 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. #include "v8.h" @@ -53,29 +30,14 @@ namespace internal { V8_DECLARE_ONCE(init_once); -List<CallCompletedCallback>* V8::call_completed_callbacks_ = NULL; v8::ArrayBuffer::Allocator* V8::array_buffer_allocator_ = NULL; v8::Platform* V8::platform_ = NULL; bool V8::Initialize(Deserializer* des) { InitializeOncePerProcess(); - - // The current thread may not yet had entered an isolate to run. - // Note the Isolate::Current() may be non-null because for various - // initialization purposes an initializing thread may be assigned an isolate - // but not actually enter it. - if (i::Isolate::CurrentPerIsolateThreadData() == NULL) { - i::Isolate::EnterDefaultIsolate(); - } - - ASSERT(i::Isolate::CurrentPerIsolateThreadData() != NULL); - ASSERT(i::Isolate::CurrentPerIsolateThreadData()->thread_id().Equals( - i::ThreadId::Current())); - ASSERT(i::Isolate::CurrentPerIsolateThreadData()->isolate() == - i::Isolate::Current()); - - Isolate* isolate = Isolate::Current(); + Isolate* isolate = Isolate::UncheckedCurrent(); + if (isolate == NULL) return true; if (isolate->IsDead()) return false; if (isolate->IsInitialized()) return true; @@ -108,10 +70,8 @@ void V8::TearDown() { RegisteredExtension::UnregisterAll(); Isolate::GlobalTearDown(); - delete call_completed_callbacks_; - call_completed_callbacks_ = NULL; - Sampler::TearDown(); + Serializer::TearDown(); #ifdef V8_USE_DEFAULT_PLATFORM DefaultPlatform* platform = static_cast<DefaultPlatform*>(platform_); @@ -127,65 +87,9 @@ void V8::SetReturnAddressLocationResolver( } -void V8::AddCallCompletedCallback(CallCompletedCallback callback) { - if (call_completed_callbacks_ == NULL) { // Lazy init. - call_completed_callbacks_ = new List<CallCompletedCallback>(); - } - for (int i = 0; i < call_completed_callbacks_->length(); i++) { - if (callback == call_completed_callbacks_->at(i)) return; - } - call_completed_callbacks_->Add(callback); -} - - -void V8::RemoveCallCompletedCallback(CallCompletedCallback callback) { - if (call_completed_callbacks_ == NULL) return; - for (int i = 0; i < call_completed_callbacks_->length(); i++) { - if (callback == call_completed_callbacks_->at(i)) { - call_completed_callbacks_->Remove(i); - } - } -} - - -void V8::FireCallCompletedCallback(Isolate* isolate) { - bool has_call_completed_callbacks = call_completed_callbacks_ != NULL; - bool run_microtasks = isolate->autorun_microtasks() && - isolate->microtask_pending(); - if (!has_call_completed_callbacks && !run_microtasks) return; - - HandleScopeImplementer* handle_scope_implementer = - isolate->handle_scope_implementer(); - if (!handle_scope_implementer->CallDepthIsZero()) return; - // Fire callbacks. Increase call depth to prevent recursive callbacks. - handle_scope_implementer->IncrementCallDepth(); - if (run_microtasks) Execution::RunMicrotasks(isolate); - if (has_call_completed_callbacks) { - for (int i = 0; i < call_completed_callbacks_->length(); i++) { - call_completed_callbacks_->at(i)(); - } - } - handle_scope_implementer->DecrementCallDepth(); -} - - -void V8::RunMicrotasks(Isolate* isolate) { - if (!isolate->microtask_pending()) - return; - - HandleScopeImplementer* handle_scope_implementer = - isolate->handle_scope_implementer(); - ASSERT(handle_scope_implementer->CallDepthIsZero()); - - // Increase call depth to prevent recursive callbacks. - handle_scope_implementer->IncrementCallDepth(); - Execution::RunMicrotasks(isolate); - handle_scope_implementer->DecrementCallDepth(); -} - - void V8::InitializeOncePerProcessImpl() { FlagList::EnforceFlagImplications(); + Serializer::InitializeOncePerProcess(); if (FLAG_predictable && FLAG_random_seed == 0) { // Avoid random seeds in predictable mode. @@ -195,15 +99,23 @@ void V8::InitializeOncePerProcessImpl() { if (FLAG_stress_compaction) { FLAG_force_marking_deque_overflows = true; FLAG_gc_global = true; - FLAG_max_new_space_size = (1 << (kPageSizeBits - 10)) * 2; + FLAG_max_new_space_size = 2 * Page::kPageSize; } #ifdef V8_USE_DEFAULT_PLATFORM platform_ = new DefaultPlatform; #endif Sampler::SetUp(); - CPU::SetUp(); + // TODO(svenpanne) Clean this up when Serializer is a real object. + bool serializer_enabled = Serializer::enabled(NULL); + CpuFeatures::Probe(serializer_enabled); OS::PostSetUp(); + // The custom exp implementation needs 16KB of lookup data; initialize it + // on demand. + init_fast_sqrt_function(); +#ifdef _WIN64 + init_modulo_function(); +#endif ElementsAccessor::InitializeOncePerProcess(); LOperand::SetUpCaches(); SetUpJSCallerSavedCodeData(); |