Reviewers: Jakob,
Description:
Introduce --log-external-callbacks flag apart from --log-timer-events.
Logging every external callback can be expensive and distort the profile in
some
cases.
[email protected]
BUG=
Please review this at https://chromiumcodereview.appspot.com/11280212/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/arm/macro-assembler-arm.cc
M src/flag-definitions.h
M src/ia32/macro-assembler-ia32.cc
M src/vm-state-inl.h
M src/x64/macro-assembler-x64.cc
M tools/plot-timer-events
Index: src/arm/macro-assembler-arm.cc
diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc
index
7f6c60d2af60103b3fa0edf8e0a212ea5415bfb7..c34343450f5fceba3e0430980ea8ae0abc3f7c43
100644
--- a/src/arm/macro-assembler-arm.cc
+++ b/src/arm/macro-assembler-arm.cc
@@ -2222,7 +2222,7 @@ void
MacroAssembler::CallApiFunctionAndReturn(ExternalReference function,
add(r6, r6, Operand(1));
str(r6, MemOperand(r7, kLevelOffset));
- if (FLAG_log_timer_events) {
+ if (FLAG_log_external_callbacks) {
FrameScope frame(this, StackFrame::MANUAL);
PushSafepointRegisters();
PrepareCallCFunction(0, r0);
@@ -2236,7 +2236,7 @@ void
MacroAssembler::CallApiFunctionAndReturn(ExternalReference function,
DirectCEntryStub stub;
stub.GenerateCall(this, function);
- if (FLAG_log_timer_events) {
+ if (FLAG_log_external_callbacks) {
FrameScope frame(this, StackFrame::MANUAL);
PushSafepointRegisters();
PrepareCallCFunction(0, r0);
Index: src/flag-definitions.h
diff --git a/src/flag-definitions.h b/src/flag-definitions.h
index
b25fe5f19deaa0e398375462b90f22454bb443ee..9e2c4940cd1ab4e366fb61461d61cab791b3a3ca
100644
--- a/src/flag-definitions.h
+++ b/src/flag-definitions.h
@@ -668,7 +668,9 @@ DEFINE_string(logfile, "v8.log", "Specify the name of
the log file.")
DEFINE_bool(ll_prof, false, "Enable low-level linux profiler.")
DEFINE_string(gc_fake_mmap, "/tmp/__v8_gc__",
"Specify the name of the file for fake gc mmap used in
ll_prof")
-DEFINE_bool(log_timer_events, false, "Log histogram timer events.")
+DEFINE_bool(log_timer_events, false, "Time events.")
+DEFINE_bool(log_external_callbacks, false, "Time external callbacks.")
+DEFINE_implication(log_external_callbacks, log_timer_events)
//
// Disassembler only flags
Index: src/ia32/macro-assembler-ia32.cc
diff --git a/src/ia32/macro-assembler-ia32.cc
b/src/ia32/macro-assembler-ia32.cc
index
14fb8ca85220f1adba75dd26fb86711466bb72ad..f8d41ecd3e9e21a8b0c804202c37fd9caef29e77
100644
--- a/src/ia32/macro-assembler-ia32.cc
+++ b/src/ia32/macro-assembler-ia32.cc
@@ -1920,7 +1920,7 @@ void MacroAssembler::CallApiFunctionAndReturn(Address
function_address,
mov(edi, Operand::StaticVariable(limit_address));
add(Operand::StaticVariable(level_address), Immediate(1));
- if (FLAG_log_timer_events) {
+ if (FLAG_log_external_callbacks) {
FrameScope frame(this, StackFrame::MANUAL);
PushSafepointRegisters();
PrepareCallCFunction(0, eax);
@@ -1931,7 +1931,7 @@ void MacroAssembler::CallApiFunctionAndReturn(Address
function_address,
// Call the api function.
call(function_address, RelocInfo::RUNTIME_ENTRY);
- if (FLAG_log_timer_events) {
+ if (FLAG_log_external_callbacks) {
FrameScope frame(this, StackFrame::MANUAL);
PushSafepointRegisters();
PrepareCallCFunction(0, eax);
Index: src/vm-state-inl.h
diff --git a/src/vm-state-inl.h b/src/vm-state-inl.h
index
bc481605fbf774034b45cb7ad4015b86e6ac1652..baa4b44932633f994d323d54db9c675eaa46d8ff
100644
--- a/src/vm-state-inl.h
+++ b/src/vm-state-inl.h
@@ -67,7 +67,7 @@ VMState::VMState(Isolate* isolate, StateTag tag)
LOG(isolate, UncheckedStringEvent("From",
StateToString(previous_tag_)));
}
- if (FLAG_log_timer_events) {
+ if (FLAG_log_external_callbacks) {
LOG(isolate, ExternalSwitch(previous_tag_, tag));
}
@@ -84,7 +84,7 @@ VMState::~VMState() {
UncheckedStringEvent("To", StateToString(previous_tag_)));
}
- if (FLAG_log_timer_events) {
+ if (FLAG_log_external_callbacks) {
LOG(isolate_, ExternalSwitch(isolate_->current_vm_state(),
previous_tag_));
}
Index: src/x64/macro-assembler-x64.cc
diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc
index
4e4f2c572c88097c74185c2ebc48a22cb6387e6f..671f59f20578a6673fee6de23cd0ed513e22d795
100644
--- a/src/x64/macro-assembler-x64.cc
+++ b/src/x64/macro-assembler-x64.cc
@@ -721,7 +721,7 @@ void MacroAssembler::CallApiFunctionAndReturn(Address
function_address,
movq(prev_limit_reg, Operand(base_reg, kLimitOffset));
addl(Operand(base_reg, kLevelOffset), Immediate(1));
- if (FLAG_log_timer_events) {
+ if (FLAG_log_external_callbacks) {
FrameScope frame(this, StackFrame::MANUAL);
PushSafepointRegisters();
PrepareCallCFunction(0);
@@ -734,7 +734,7 @@ void MacroAssembler::CallApiFunctionAndReturn(Address
function_address,
RelocInfo::RUNTIME_ENTRY);
call(rax);
- if (FLAG_log_timer_events) {
+ if (FLAG_log_external_callbacks) {
FrameScope frame(this, StackFrame::MANUAL);
PushSafepointRegisters();
PrepareCallCFunction(0);
Index: tools/plot-timer-events
diff --git a/tools/plot-timer-events b/tools/plot-timer-events
index
efa82bc5cda1bff133e1421f3a730165053d36bd..5bd43155cfd5c8bea03c23d14e444971387b43f1
100755
--- a/tools/plot-timer-events
+++ b/tools/plot-timer-events
@@ -32,7 +32,6 @@ if [ ! -x "$d8_exec" ]; then
exit 1
fi
-# nm spits out 'no symbols found' messages to stderr.
cat $log_file | $d8_exec $tools_path/csvparser.js \
$tools_path/splaytree.js $tools_path/codemap.js \
$tools_path/logreader.js $tools_path/plot-timer-events.js \
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev