e5ba156d88
After we landed the tracing runtime call stats, which gave us a lot of V8 insight in tracing, we noticed that there is some arising issues and discrepancies. Issues include: Missing trace events, that happened due to transforming those trace events into runtime calls Discrepancies include: Missing categories in Runtime call stats like GC, because we are not handling the Scoped runtime calls properly in the tracing version. To reduce/eliminate those issue, we are taking a small step back. We are unifying the RuntimeStats code and using the original one. That would allow us to use all the original probes but emit trace events from them. We are also putting back the trace-events in their place. The output from both system should be intact (Except of the addition of the missing trace-events). Also as a byproduct, we are reducing the number of context scopes by half since we are using the same scope as runtime call stats. As a follow up to this CL, we will address the non-scoped Runtime Call Stats (mainly in GC). BUG=642373 Review-Url: https://codereview.chromium.org/2296243002 Cr-Commit-Position: refs/heads/master@{#39180}
36 lines
1.1 KiB
C++
36 lines
1.1 KiB
C++
// Copyright 2016 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "src/api-arguments.h"
|
|
|
|
#include "src/tracing/trace-event.h"
|
|
#include "src/vm-state-inl.h"
|
|
|
|
namespace v8 {
|
|
namespace internal {
|
|
|
|
Handle<Object> FunctionCallbackArguments::Call(FunctionCallback f) {
|
|
Isolate* isolate = this->isolate();
|
|
RuntimeCallTimerScope timer(isolate, &RuntimeCallStats::FunctionCallback);
|
|
VMState<EXTERNAL> state(isolate);
|
|
ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f));
|
|
FunctionCallbackInfo<v8::Value> info(begin(), argv_, argc_);
|
|
f(info);
|
|
return GetReturnValue<Object>(isolate);
|
|
}
|
|
|
|
Handle<JSObject> PropertyCallbackArguments::Call(
|
|
IndexedPropertyEnumeratorCallback f) {
|
|
Isolate* isolate = this->isolate();
|
|
RuntimeCallTimerScope timer(isolate, &RuntimeCallStats::PropertyCallback);
|
|
VMState<EXTERNAL> state(isolate);
|
|
ExternalCallbackScope call_scope(isolate, FUNCTION_ADDR(f));
|
|
PropertyCallbackInfo<v8::Array> info(begin());
|
|
f(info);
|
|
return GetReturnValue<JSObject>(isolate);
|
|
}
|
|
|
|
} // namespace internal
|
|
} // namespace v8
|