Set ScopeInfo when compiling for unit tests.
authorsigurds@chromium.org <sigurds@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 19 Aug 2014 11:24:24 +0000 (11:24 +0000)
committersigurds@chromium.org <sigurds@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 19 Aug 2014 11:24:24 +0000 (11:24 +0000)
This is required to correctly treat eval in unit tests.

BUG=
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23193 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

test/cctest/compiler/function-tester.h
test/cctest/compiler/test-changes-lowering.cc
test/cctest/compiler/test-codegen-deopt.cc
test/cctest/compiler/test-run-jscalls.cc

index 2ed2fe9..67b704d 100644 (file)
@@ -46,6 +46,8 @@ class FunctionTester : public InitializedHandleScope {
     CHECK(Rewriter::Rewrite(&info));
     CHECK(Scope::Analyze(&info));
     CHECK_NE(NULL, info.scope());
+    Handle<ScopeInfo> scope_info = ScopeInfo::Create(info.scope(), info.zone());
+    info.shared_info()->set_scope_info(*scope_info);
 
     EnsureDeoptimizationSupport(&info);
 
index e3ee4a4..78503e8 100644 (file)
@@ -59,6 +59,9 @@ class ChangesLoweringTester : public GraphBuilderTester<ReturnType> {
       CHECK(Rewriter::Rewrite(&info));
       CHECK(Scope::Analyze(&info));
       CHECK_NE(NULL, info.scope());
+      Handle<ScopeInfo> scope_info =
+          ScopeInfo::Create(info.scope(), info.zone());
+      info.shared_info()->set_scope_info(*scope_info);
       Pipeline pipeline(&info);
       Linkage linkage(&info);
       Handle<Code> code =
index 7f5fd9f..1e30e93 100644 (file)
@@ -50,6 +50,8 @@ class DeoptCodegenTester {
     CHECK(Rewriter::Rewrite(&info));
     CHECK(Scope::Analyze(&info));
     CHECK_NE(NULL, info.scope());
+    Handle<ScopeInfo> scope_info = ScopeInfo::Create(info.scope(), info.zone());
+    info.shared_info()->set_scope_info(*scope_info);
 
     FunctionTester::EnsureDeoptimizationSupport(&info);
 
index 2ad7e50..fa7e98d 100644 (file)
@@ -233,3 +233,15 @@ TEST(ReceiverPatching) {
   Handle<JSObject> g(T.function->context()->global_object()->global_proxy());
   T.CheckCall(g, T.undefined());
 }
+
+
+TEST(CallEval) {
+  FunctionTester T(
+      "var x = 42;"
+      "(function () {"
+      "function bar() { return eval('x') };"
+      "return bar;"
+      "})();");
+
+  T.CheckCall(T.Val(42), T.Val("x"), T.undefined());
+}