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()); |