| Index: test/cctest/compiler/test-run-jscalls.cc
|
| diff --git a/test/cctest/compiler/test-run-jscalls.cc b/test/cctest/compiler/test-run-jscalls.cc
|
| index fa7e98d5ec8178940dcb901c0f29f71115453f14..38b9624d6e165b508c2f7de0980a25c2f3e41acc 100644
|
| --- a/test/cctest/compiler/test-run-jscalls.cc
|
| +++ b/test/cctest/compiler/test-run-jscalls.cc
|
| @@ -245,3 +245,45 @@ TEST(CallEval) {
|
|
|
| T.CheckCall(T.Val(42), T.Val("x"), T.undefined());
|
| }
|
| +
|
| +
|
| +TEST(ContextLoadedFromActivation) {
|
| + const char* script =
|
| + "var x = 42;"
|
| + "(function() {"
|
| + " return function () { return x };"
|
| + "})()";
|
| +
|
| + // Disable context specialization.
|
| + FunctionTester T(script, false);
|
| + v8::Local<v8::Context> context = v8::Context::New(CcTest::isolate());
|
| + v8::Context::Scope scope(context);
|
| + v8::Local<v8::Value> value = CompileRun(script);
|
| + i::Handle<i::Object> ofun = v8::Utils::OpenHandle(*value);
|
| + i::Handle<i::JSFunction> jsfun = Handle<JSFunction>::cast(ofun);
|
| + jsfun->set_code(T.function->code());
|
| + context->Global()->Set(v8_str("foo"), v8::Utils::ToLocal(jsfun));
|
| + CompileRun("var x = 24;");
|
| + ExpectInt32("foo();", 24);
|
| +}
|
| +
|
| +
|
| +TEST(BuiltinLoadedFromActivation) {
|
| + const char* script =
|
| + "var x = 42;"
|
| + "(function() {"
|
| + " return function () { return this; };"
|
| + "})()";
|
| +
|
| + // Disable context specialization.
|
| + FunctionTester T(script, false);
|
| + v8::Local<v8::Context> context = v8::Context::New(CcTest::isolate());
|
| + v8::Context::Scope scope(context);
|
| + v8::Local<v8::Value> value = CompileRun(script);
|
| + i::Handle<i::Object> ofun = v8::Utils::OpenHandle(*value);
|
| + i::Handle<i::JSFunction> jsfun = Handle<JSFunction>::cast(ofun);
|
| + jsfun->set_code(T.function->code());
|
| + context->Global()->Set(v8_str("foo"), v8::Utils::ToLocal(jsfun));
|
| + CompileRun("var x = 24;");
|
| + ExpectObject("foo()", context->Global());
|
| +}
|
|
|