diff options
author | Steve Block <steveblock@google.com> | 2010-05-10 14:33:55 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2010-05-10 15:08:22 +0100 |
commit | 6ded16be15dd865a9b21ea304d5273c8be299c87 (patch) | |
tree | b3661ae5d929e233f7024223f3fad0f2a284cd6e /src/log-inl.h | |
parent | 6599b9dd3411791c9d89ab7efbfb4131e5664c48 (diff) | |
download | android_external_v8-6ded16be15dd865a9b21ea304d5273c8be299c87.tar.gz android_external_v8-6ded16be15dd865a9b21ea304d5273c8be299c87.tar.bz2 android_external_v8-6ded16be15dd865a9b21ea304d5273c8be299c87.zip |
Update V8 to r4588
We're using WebKit r58033, as used by
http://src.chromium.org/svn/releases/5.0.387.0/DEPS
This requires http://v8.googlecode.com/svn/trunk@4465 but this version has a
crashing bug for ARM. Instead we use http://v8.googlecode.com/svn/trunk@4588,
which is used by http://src.chromium.org/svn/releases/6.0.399.0/DEPS
Note that a trivial bug fix was required in arm/codegen-arm.cc. This is guarded
with ANDROID. See http://code.google.com/p/v8/issues/detail?id=703
Change-Id: I459647a8286c4f8c7405f0c5581ecbf051a6f1e8
Diffstat (limited to 'src/log-inl.h')
-rw-r--r-- | src/log-inl.h | 93 |
1 files changed, 13 insertions, 80 deletions
diff --git a/src/log-inl.h b/src/log-inl.h index 1500252a..02238fe9 100644 --- a/src/log-inl.h +++ b/src/log-inl.h @@ -29,96 +29,29 @@ #define V8_LOG_INL_H_ #include "log.h" +#include "cpu-profiler.h" namespace v8 { namespace internal { -// -// VMState class implementation. A simple stack of VM states held by the -// logger and partially threaded through the call stack. States are pushed by -// VMState construction and popped by destruction. -// #ifdef ENABLE_LOGGING_AND_PROFILING -inline const char* StateToString(StateTag state) { - switch (state) { - case JS: - return "JS"; - case GC: - return "GC"; - case COMPILER: - return "COMPILER"; - case OTHER: - return "OTHER"; - default: - UNREACHABLE(); - return NULL; - } -} - -VMState::VMState(StateTag state) : disabled_(true), external_callback_(NULL) { - if (!Logger::is_logging()) { - return; - } - - disabled_ = false; -#if !defined(ENABLE_HEAP_PROTECTION) - // When not protecting the heap, there is no difference between - // EXTERNAL and OTHER. As an optimization in that case, we will not - // perform EXTERNAL->OTHER transitions through the API. We thus - // compress the two states into one. - if (state == EXTERNAL) state = OTHER; -#endif - state_ = state; - previous_ = Logger::current_state_; - Logger::current_state_ = this; - - if (FLAG_log_state_changes) { - LOG(UncheckedStringEvent("Entering", StateToString(state_))); - if (previous_ != NULL) { - LOG(UncheckedStringEvent("From", StateToString(previous_->state_))); - } - } -#ifdef ENABLE_HEAP_PROTECTION - if (FLAG_protect_heap && previous_ != NULL) { - if (state_ == EXTERNAL) { - // We are leaving V8. - ASSERT(previous_->state_ != EXTERNAL); - Heap::Protect(); - } else if (previous_->state_ == EXTERNAL) { - // We are entering V8. - Heap::Unprotect(); +Logger::LogEventsAndTags Logger::ToNativeByScript(Logger::LogEventsAndTags tag, + Script* script) { + if ((tag == FUNCTION_TAG || tag == LAZY_COMPILE_TAG || tag == SCRIPT_TAG) + && script->type()->value() == Script::TYPE_NATIVE) { + switch (tag) { + case FUNCTION_TAG: return NATIVE_FUNCTION_TAG; + case LAZY_COMPILE_TAG: return NATIVE_LAZY_COMPILE_TAG; + case SCRIPT_TAG: return NATIVE_SCRIPT_TAG; + default: return tag; } + } else { + return tag; } -#endif } - -VMState::~VMState() { - if (disabled_) return; - Logger::current_state_ = previous_; - - if (FLAG_log_state_changes) { - LOG(UncheckedStringEvent("Leaving", StateToString(state_))); - if (previous_ != NULL) { - LOG(UncheckedStringEvent("To", StateToString(previous_->state_))); - } - } - -#ifdef ENABLE_HEAP_PROTECTION - if (FLAG_protect_heap && previous_ != NULL) { - if (state_ == EXTERNAL) { - // We are reentering V8. - ASSERT(previous_->state_ != EXTERNAL); - Heap::Unprotect(); - } else if (previous_->state_ == EXTERNAL) { - // We are leaving V8. - Heap::Protect(); - } - } -#endif -} -#endif +#endif // ENABLE_LOGGING_AND_PROFILING } } // namespace v8::internal |