Revision: 13051
Author: [email protected]
Date: Mon Nov 26 00:56:59 2012
Log: Also time other API functions calling into javascript.
And prevent crash when starting chromium without --single-process.
BUG=
Review URL: https://chromiumcodereview.appspot.com/11411144
http://code.google.com/p/v8/source/detail?r=13051
Modified:
/branches/bleeding_edge/src/api.cc
/branches/bleeding_edge/src/compiler.cc
/branches/bleeding_edge/src/counters.cc
/branches/bleeding_edge/src/log-utils.cc
/branches/bleeding_edge/src/log.cc
/branches/bleeding_edge/src/log.h
/branches/bleeding_edge/src/optimizing-compiler-thread.cc
=======================================
--- /branches/bleeding_edge/src/api.cc Thu Nov 22 05:04:11 2012
+++ /branches/bleeding_edge/src/api.cc Mon Nov 26 00:56:59 2012
@@ -1682,7 +1682,7 @@
LOG_API(isolate, "Script::Run");
ENTER_V8(isolate);
i::Logger::TimerEventScope timer_scope(
- isolate->logger(), i::Logger::TimerEventScope::v8_execute);
+ isolate, i::Logger::TimerEventScope::v8_execute);
i::Object* raw_result = NULL;
{
i::HandleScope scope(isolate);
@@ -3651,6 +3651,8 @@
return Local<v8::Value>());
LOG_API(isolate, "Object::CallAsFunction");
ENTER_V8(isolate);
+ i::Logger::TimerEventScope timer_scope(
+ isolate, i::Logger::TimerEventScope::v8_execute);
i::HandleScope scope(isolate);
i::Handle<i::JSObject> obj = Utils::OpenHandle(this);
i::Handle<i::Object> recv_obj = Utils::OpenHandle(*recv);
@@ -3682,6 +3684,8 @@
return Local<v8::Object>());
LOG_API(isolate, "Object::CallAsConstructor");
ENTER_V8(isolate);
+ i::Logger::TimerEventScope timer_scope(
+ isolate, i::Logger::TimerEventScope::v8_execute);
i::HandleScope scope(isolate);
i::Handle<i::JSObject> obj = Utils::OpenHandle(this);
STATIC_ASSERT(sizeof(v8::Handle<v8::Value>) == sizeof(i::Object**));
@@ -3724,6 +3728,8 @@
return Local<v8::Object>());
LOG_API(isolate, "Function::NewInstance");
ENTER_V8(isolate);
+ i::Logger::TimerEventScope timer_scope(
+ isolate, i::Logger::TimerEventScope::v8_execute);
HandleScope scope;
i::Handle<i::JSFunction> function = Utils::OpenHandle(this);
STATIC_ASSERT(sizeof(v8::Handle<v8::Value>) == sizeof(i::Object**));
@@ -3742,6 +3748,8 @@
ON_BAILOUT(isolate, "v8::Function::Call()", return Local<v8::Value>());
LOG_API(isolate, "Function::Call");
ENTER_V8(isolate);
+ i::Logger::TimerEventScope timer_scope(
+ isolate, i::Logger::TimerEventScope::v8_execute);
i::Object* raw_result = NULL;
{
i::HandleScope scope(isolate);
=======================================
--- /branches/bleeding_edge/src/compiler.cc Thu Nov 22 05:04:11 2012
+++ /branches/bleeding_edge/src/compiler.cc Mon Nov 26 00:56:59 2012
@@ -396,10 +396,9 @@
bool is_optimizing = V8::UseCrankshaft() &&
!info->IsCompilingForDebugging() &&
info->IsOptimizing();
- Logger* logger = info->isolate()->logger();
if (is_optimizing) {
Logger::TimerEventScope timer(
- logger, Logger::TimerEventScope::v8_recompile_synchronous);
+ info->isolate(),
Logger::TimerEventScope::v8_recompile_synchronous);
return MakeCrankshaftCode(info);
} else {
if (info->IsOptimizing()) {
@@ -408,7 +407,7 @@
info->DisableOptimization();
}
Logger::TimerEventScope timer(
- logger, Logger::TimerEventScope::v8_compile_full_code);
+ info->isolate(), Logger::TimerEventScope::v8_compile_full_code);
return FullCodeGenerator::MakeCode(info);
}
}
@@ -860,7 +859,7 @@
// Here we prepare compile data for the parallel recompilation thread,
but
// this still happens synchronously and interrupts execution.
Logger::TimerEventScope timer(
- isolate->logger(),
Logger::TimerEventScope::v8_recompile_synchronous);
+ isolate, Logger::TimerEventScope::v8_recompile_synchronous);
if (!isolate->optimizing_compiler_thread()->IsQueueAvailable()) {
if (FLAG_trace_parallel_recompilation) {
@@ -921,7 +920,7 @@
Isolate* isolate = info->isolate();
VMState state(isolate, PARALLEL_COMPILER);
Logger::TimerEventScope timer(
- isolate->logger(),
Logger::TimerEventScope::v8_recompile_synchronous);
+ isolate, Logger::TimerEventScope::v8_recompile_synchronous);
// If crankshaft succeeded, install the optimized code else install
// the unoptimized code.
OptimizingCompiler::Status status = optimizing_compiler->last_status();
=======================================
--- /branches/bleeding_edge/src/counters.cc Thu Nov 22 05:04:11 2012
+++ /branches/bleeding_edge/src/counters.cc Mon Nov 26 00:56:59 2012
@@ -92,9 +92,8 @@
histogram_.AddSample(milliseconds);
}
if (FLAG_log_timer_events) {
- stop_time_ = OS::Ticks();
- Isolate::Current()->logger()->TimerEvent(
- histogram_.name_, start_time_, stop_time_);
+ LOG(Isolate::Current(),
+ TimerEvent(histogram_.name_, start_time_, OS::Ticks()));
}
}
=======================================
--- /branches/bleeding_edge/src/log-utils.cc Thu Nov 22 05:04:11 2012
+++ /branches/bleeding_edge/src/log-utils.cc Mon Nov 26 00:56:59 2012
@@ -67,6 +67,7 @@
FLAG_log_suspect = true;
FLAG_log_handles = true;
FLAG_log_regexp = true;
+ FLAG_log_timer_events = true;
}
// --prof implies --log-code.
=======================================
--- /branches/bleeding_edge/src/log.cc Thu Nov 22 05:04:11 2012
+++ /branches/bleeding_edge/src/log.cc Mon Nov 26 00:56:59 2012
@@ -706,6 +706,7 @@
void Logger::TimerEvent(const char* name, int64_t start, int64_t end) {
+ if (!log_->IsEnabled()) return;
ASSERT(FLAG_log_timer_events);
LogMessageBuilder msg(this);
int since_epoch = static_cast<int>(start - epoch_);
@@ -713,6 +714,11 @@
msg.Append("timer-event,\"%s\",%ld,%ld\n", name, since_epoch,
pause_time);
msg.WriteToLogFile();
}
+
+
+void Logger::TimerEventScope::LogTimerEvent() {
+ LOG(isolate_, TimerEvent(name_, start_, OS::Ticks()));
+}
const char* Logger::TimerEventScope::v8_recompile_synchronous =
=======================================
--- /branches/bleeding_edge/src/log.h Thu Nov 22 05:04:11 2012
+++ /branches/bleeding_edge/src/log.h Mon Nov 26 00:56:59 2012
@@ -76,6 +76,7 @@
class Semaphore;
class SlidingStateWindow;
class Ticker;
+class Isolate;
#undef LOG
#define LOG(isolate, Call) \
@@ -278,16 +279,16 @@
class TimerEventScope {
public:
- TimerEventScope(Logger* logger, const char* name)
- : logger_(logger), name_(name), start_(0) {
+ TimerEventScope(Isolate* isolate, const char* name)
+ : isolate_(isolate), name_(name), start_(0) {
if (FLAG_log_timer_events) start_ = OS::Ticks();
}
~TimerEventScope() {
- if (FLAG_log_timer_events) {
- logger_->TimerEvent(name_, start_, OS::Ticks());
- }
+ if (FLAG_log_timer_events) LogTimerEvent();
}
+
+ void LogTimerEvent();
static const char* v8_recompile_synchronous;
static const char* v8_recompile_parallel;
@@ -295,7 +296,7 @@
static const char* v8_execute;
private:
- Logger* logger_;
+ Isolate* isolate_;
const char* name_;
int64_t start_;
};
=======================================
--- /branches/bleeding_edge/src/optimizing-compiler-thread.cc Mon Nov 26
00:47:48 2012
+++ /branches/bleeding_edge/src/optimizing-compiler-thread.cc Mon Nov 26
00:56:59 2012
@@ -49,7 +49,7 @@
while (true) {
input_queue_semaphore_->Wait();
Logger::TimerEventScope timer(
- isolate_->logger(),
Logger::TimerEventScope::v8_recompile_parallel);
+ isolate_, Logger::TimerEventScope::v8_recompile_parallel);
if (Acquire_Load(&stop_thread_)) {
stop_semaphore_->Signal();
if (FLAG_trace_parallel_recompilation) {
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev