| Index: test/cctest/test-log-stack-tracer.cc
|
| diff --git a/test/cctest/test-log-stack-tracer.cc b/test/cctest/test-log-stack-tracer.cc
|
| index 8b1549bcab352d061ab19c93a224f78c70998f91..4a0717d09d556d23d7f64f6914ae8c8cd56a9afa 100644
|
| --- a/test/cctest/test-log-stack-tracer.cc
|
| +++ b/test/cctest/test-log-stack-tracer.cc
|
| @@ -187,8 +187,10 @@ static bool IsAddressWithinFuncCode(JSFunction* function, Address addr) {
|
| }
|
|
|
|
|
| -static bool IsAddressWithinFuncCode(const char* func_name, Address addr) {
|
| - v8::Local<v8::Value> func = CcTest::env()->Global()->Get(v8_str(func_name));
|
| +static bool IsAddressWithinFuncCode(v8::Local<v8::Context> context,
|
| + const char* func_name,
|
| + Address addr) {
|
| + v8::Local<v8::Value> func = context->Global()->Get(v8_str(func_name));
|
| CHECK(func->IsFunction());
|
| JSFunction* js_func = JSFunction::cast(*v8::Utils::OpenHandle(*func));
|
| return IsAddressWithinFuncCode(js_func, addr);
|
| @@ -225,19 +227,21 @@ static void construct_call(const v8::FunctionCallbackInfo<v8::Value>& args) {
|
|
|
|
|
| // Use the API to create a JSFunction object that calls the above C++ function.
|
| -void CreateFramePointerGrabberConstructor(const char* constructor_name) {
|
| +void CreateFramePointerGrabberConstructor(v8::Local<v8::Context> context,
|
| + const char* constructor_name) {
|
| Local<v8::FunctionTemplate> constructor_template =
|
| v8::FunctionTemplate::New(construct_call);
|
| constructor_template->SetClassName(v8_str("FPGrabber"));
|
| Local<Function> fun = constructor_template->GetFunction();
|
| - CcTest::env()->Global()->Set(v8_str(constructor_name), fun);
|
| + context->Global()->Set(v8_str(constructor_name), fun);
|
| }
|
|
|
|
|
| // Creates a global function named 'func_name' that calls the tracing
|
| // function 'trace_func_name' with an actual EBP register value,
|
| // encoded as one or two Smis.
|
| -static void CreateTraceCallerFunction(const char* func_name,
|
| +static void CreateTraceCallerFunction(v8::Local<v8::Context> context,
|
| + const char* func_name,
|
| const char* trace_func_name) {
|
| i::EmbeddedVector<char, 256> trace_call_buf;
|
| i::OS::SNPrintF(trace_call_buf,
|
| @@ -249,7 +253,7 @@ static void CreateTraceCallerFunction(const char* func_name,
|
|
|
| // Create the FPGrabber function, which grabs the caller's frame pointer
|
| // when called as a constructor.
|
| - CreateFramePointerGrabberConstructor("FPGrabber");
|
| + CreateFramePointerGrabberConstructor(context, "FPGrabber");
|
|
|
| // Compile the script.
|
| CompileRun(trace_call_buf.start());
|
| @@ -267,11 +271,13 @@ TEST(CFromJSStackTrace) {
|
| TickSample sample;
|
| InitTraceEnv(&sample);
|
|
|
| - CcTest::InitializeVM(TRACE_EXTENSION);
|
| v8::HandleScope scope(CcTest::isolate());
|
| + v8::Local<v8::Context> context = CcTest::NewContext(TRACE_EXTENSION);
|
| + v8::Context::Scope context_scope(context);
|
| +
|
| // Create global function JSFuncDoTrace which calls
|
| // extension function trace() with the current frame pointer value.
|
| - CreateTraceCallerFunction("JSFuncDoTrace", "trace");
|
| + CreateTraceCallerFunction(context, "JSFuncDoTrace", "trace");
|
| Local<Value> result = CompileRun(
|
| "function JSTrace() {"
|
| " JSFuncDoTrace();"
|
| @@ -294,8 +300,9 @@ TEST(CFromJSStackTrace) {
|
| int base = 0;
|
| CHECK_GT(sample.frames_count, base + 1);
|
|
|
| - CHECK(IsAddressWithinFuncCode("JSFuncDoTrace", sample.stack[base + 0]));
|
| - CHECK(IsAddressWithinFuncCode("JSTrace", sample.stack[base + 1]));
|
| + CHECK(IsAddressWithinFuncCode(
|
| + context, "JSFuncDoTrace", sample.stack[base + 0]));
|
| + CHECK(IsAddressWithinFuncCode(context, "JSTrace", sample.stack[base + 1]));
|
| }
|
|
|
|
|
| @@ -312,11 +319,13 @@ TEST(PureJSStackTrace) {
|
| TickSample sample;
|
| InitTraceEnv(&sample);
|
|
|
| - CcTest::InitializeVM(TRACE_EXTENSION);
|
| v8::HandleScope scope(CcTest::isolate());
|
| + v8::Local<v8::Context> context = CcTest::NewContext(TRACE_EXTENSION);
|
| + v8::Context::Scope context_scope(context);
|
| +
|
| // Create global function JSFuncDoTrace which calls
|
| // extension function js_trace() with the current frame pointer value.
|
| - CreateTraceCallerFunction("JSFuncDoTrace", "js_trace");
|
| + CreateTraceCallerFunction(context, "JSFuncDoTrace", "js_trace");
|
| Local<Value> result = CompileRun(
|
| "function JSTrace() {"
|
| " JSFuncDoTrace();"
|
| @@ -343,8 +352,9 @@ TEST(PureJSStackTrace) {
|
| // Stack sampling will start from the caller of JSFuncDoTrace, i.e. "JSTrace"
|
| int base = 0;
|
| CHECK_GT(sample.frames_count, base + 1);
|
| - CHECK(IsAddressWithinFuncCode("JSTrace", sample.stack[base + 0]));
|
| - CHECK(IsAddressWithinFuncCode("OuterJSTrace", sample.stack[base + 1]));
|
| + CHECK(IsAddressWithinFuncCode(context, "JSTrace", sample.stack[base + 0]));
|
| + CHECK(IsAddressWithinFuncCode(
|
| + context, "OuterJSTrace", sample.stack[base + 1]));
|
| }
|
|
|
|
|
| @@ -379,15 +389,18 @@ static int CFunc(int depth) {
|
| TEST(PureCStackTrace) {
|
| TickSample sample;
|
| InitTraceEnv(&sample);
|
| - CcTest::InitializeVM(TRACE_EXTENSION);
|
| + v8::HandleScope scope(CcTest::isolate());
|
| + v8::Local<v8::Context> context = CcTest::NewContext(TRACE_EXTENSION);
|
| + v8::Context::Scope context_scope(context);
|
| // Check that sampler doesn't crash
|
| CHECK_EQ(10, CFunc(10));
|
| }
|
|
|
|
|
| TEST(JsEntrySp) {
|
| - CcTest::InitializeVM(TRACE_EXTENSION);
|
| v8::HandleScope scope(CcTest::isolate());
|
| + v8::Local<v8::Context> context = CcTest::NewContext(TRACE_EXTENSION);
|
| + v8::Context::Scope context_scope(context);
|
| CHECK_EQ(0, GetJsEntrySp());
|
| CompileRun("a = 1; b = a + 1;");
|
| CHECK_EQ(0, GetJsEntrySp());
|
|
|