diff options
Diffstat (limited to 'deps/v8/src/log.cc')
-rw-r--r-- | deps/v8/src/log.cc | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/deps/v8/src/log.cc b/deps/v8/src/log.cc index 3979719071..21d64df21c 100644 --- a/deps/v8/src/log.cc +++ b/deps/v8/src/log.cc @@ -35,6 +35,7 @@ #include "global-handles.h" #include "log.h" #include "macro-assembler.h" +#include "platform.h" #include "runtime-profiler.h" #include "serialize.h" #include "string-stream.h" @@ -461,18 +462,20 @@ class Logger::NameBuffer { utf8_pos_ += utf8_length; return; } - int uc16_length = Min(str->length(), kUc16BufferSize); - String::WriteToFlat(str, uc16_buffer_, 0, uc16_length); + int uc16_length = Min(str->length(), kUtf16BufferSize); + String::WriteToFlat(str, utf16_buffer, 0, uc16_length); + int previous = unibrow::Utf16::kNoPreviousCharacter; for (int i = 0; i < uc16_length && utf8_pos_ < kUtf8BufferSize; ++i) { - uc16 c = uc16_buffer_[i]; + uc16 c = utf16_buffer[i]; if (c <= String::kMaxAsciiCharCodeU) { utf8_buffer_[utf8_pos_++] = static_cast<char>(c); } else { - int char_length = unibrow::Utf8::Length(c); + int char_length = unibrow::Utf8::Length(c, previous); if (utf8_pos_ + char_length > kUtf8BufferSize) break; - unibrow::Utf8::Encode(utf8_buffer_ + utf8_pos_, c); + unibrow::Utf8::Encode(utf8_buffer_ + utf8_pos_, c, previous); utf8_pos_ += char_length; } + previous = c; } } @@ -504,11 +507,11 @@ class Logger::NameBuffer { private: static const int kUtf8BufferSize = 512; - static const int kUc16BufferSize = 128; + static const int kUtf16BufferSize = 128; int utf8_pos_; char utf8_buffer_[kUtf8BufferSize]; - uc16 uc16_buffer_[kUc16BufferSize]; + uc16 utf16_buffer[kUtf16BufferSize]; }; @@ -1726,13 +1729,14 @@ void Logger::EnableSlidingStateWindow() { } } +// Protects the state below. +static LazyMutex active_samplers_mutex = LAZY_MUTEX_INITIALIZER; -Mutex* SamplerRegistry::mutex_ = OS::CreateMutex(); List<Sampler*>* SamplerRegistry::active_samplers_ = NULL; bool SamplerRegistry::IterateActiveSamplers(VisitSampler func, void* param) { - ScopedLock lock(mutex_); + ScopedLock lock(active_samplers_mutex.Pointer()); for (int i = 0; ActiveSamplersExist() && i < active_samplers_->length(); ++i) { @@ -1759,7 +1763,7 @@ SamplerRegistry::State SamplerRegistry::GetState() { void SamplerRegistry::AddActiveSampler(Sampler* sampler) { ASSERT(sampler->IsActive()); - ScopedLock lock(mutex_); + ScopedLock lock(active_samplers_mutex.Pointer()); if (active_samplers_ == NULL) { active_samplers_ = new List<Sampler*>; } else { @@ -1771,7 +1775,7 @@ void SamplerRegistry::AddActiveSampler(Sampler* sampler) { void SamplerRegistry::RemoveActiveSampler(Sampler* sampler) { ASSERT(sampler->IsActive()); - ScopedLock lock(mutex_); + ScopedLock lock(active_samplers_mutex.Pointer()); ASSERT(active_samplers_ != NULL); bool removed = active_samplers_->RemoveElement(sampler); ASSERT(removed); |