Commit 1b30de8b authored by dcarney@chromium.org's avatar dcarney@chromium.org

Fix issue with context not being saved on x64 introduced in 144543004

TBR=verwaest@chromium.org

BUG=

Review URL: https://codereview.chromium.org/143333003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18845 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 361095d3
......@@ -521,6 +521,7 @@ static void GenerateFastApiCallBody(MacroAssembler* masm,
Handle<JSFunction> function = optimization.constant_function();
__ Move(scratch2, function);
__ push(scratch2);
__ movp(rsi, FieldOperand(scratch2, JSFunction::kContextOffset));
Isolate* isolate = masm->isolate();
Handle<CallHandlerInfo> api_call_info = optimization.api_call_info();
......
......@@ -580,14 +580,27 @@ THREADED_TEST(JSONStringifyNamedInterceptorObject) {
}
static v8::Local<v8::Context> expected_current_context;
static v8::Local<v8::Context> expected_calling_context;
static void check_contexts(const v8::FunctionCallbackInfo<v8::Value>& info) {
ApiTestFuzzer::Fuzz();
CHECK(expected_current_context == info.GetIsolate()->GetCurrentContext());
CHECK(expected_calling_context == info.GetIsolate()->GetCallingContext());
}
THREADED_TEST(AccessorPropertyCrossContext) {
LocalContext env;
v8::Isolate* isolate = env->GetIsolate();
v8::HandleScope scope(isolate);
v8::Handle<v8::Function> fun = v8::Function::New(isolate, handle_property);
v8::Handle<v8::Function> fun = v8::Function::New(isolate, check_contexts);
LocalContext switch_context;
switch_context->Global()->Set(v8_str("fun"), fun);
v8::TryCatch try_catch;
expected_current_context = env.local();
expected_calling_context = switch_context.local();
CompileRun(
"var o = Object.create(null, { n: { get:fun } });"
"for (var i = 0; i < 10; i++) o.n;");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment