Revision: 10721
Author:   [email protected]
Date:     Thu Feb 16 06:01:41 2012
Log:      Allow inlining of functions containing function literals.

[email protected]
BUG=v8:1322
TEST=mjsunit/compiler/inline-literals

Review URL: https://chromiumcodereview.appspot.com/9419005
http://code.google.com/p/v8/source/detail?r=10721

Modified:
 /branches/bleeding_edge/src/ast.cc
 /branches/bleeding_edge/test/mjsunit/compiler/inline-literals.js

=======================================
--- /branches/bleeding_edge/src/ast.cc  Tue Feb 14 00:57:10 2012
+++ /branches/bleeding_edge/src/ast.cc  Thu Feb 16 06:01:41 2012
@@ -1010,6 +1010,7 @@
 INCREASE_NODE_COUNT(Conditional)
 INCREASE_NODE_COUNT(Literal)
 INCREASE_NODE_COUNT(ObjectLiteral)
+INCREASE_NODE_COUNT(FunctionLiteral)
 INCREASE_NODE_COUNT(Assignment)
 INCREASE_NODE_COUNT(Throw)
 INCREASE_NODE_COUNT(Property)
@@ -1081,12 +1082,6 @@
   add_flag(kDontOptimize);
   add_flag(kDontInline);
 }
-
-
-void AstConstructionVisitor::VisitFunctionLiteral(FunctionLiteral* node) {
-  increase_node_count();
-  add_flag(kDontInline);
-}


 void AstConstructionVisitor::VisitSharedFunctionInfoLiteral(
=======================================
--- /branches/bleeding_edge/test/mjsunit/compiler/inline-literals.js Tue Feb 14 00:57:10 2012 +++ /branches/bleeding_edge/test/mjsunit/compiler/inline-literals.js Thu Feb 16 06:01:41 2012
@@ -45,6 +45,26 @@

 TestObjectLiteral(1, 2, 3);
 TestObjectLiteral(1, 2, 3);
-%OptimizeFunctionOnNextCall(TestObjectLiteral);
+%OptimizeFunctionOnNextCall(o1);
 TestObjectLiteral(1, 2, 3);
 TestObjectLiteral('a', 'b', 'c');
+
+function f2() {
+  return function(b, c) { return b + c; };
+}
+
+function f1(a, b, c) {
+  return a + f2()(b, c);
+}
+
+function TestFunctionLiteral(a, b, c) {
+  var expected = a + b + c;
+  var result = f1(a, b, c);
+  assertEquals(expected, result, "TestFunctionLiteral");
+}
+
+TestFunctionLiteral(1, 2, 3);
+TestFunctionLiteral(1, 2, 3);
+%OptimizeFunctionOnNextCall(f1);
+TestFunctionLiteral(1, 2, 3);
+TestFunctionLiteral('a', 'b', 'c');

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to