Browse Source

[benchs] distinguish local functions from closures

Simon Krajewski 6 years ago
parent
commit
fdaa549ab7
2 changed files with 10 additions and 4 deletions
  1. 1 1
      tests/benchs/build.hxml
  2. 9 3
      tests/benchs/src/cases/Calls.hx

+ 1 - 1
tests/benchs/build.hxml

@@ -1,6 +1,6 @@
 -cp src
 -main Main
--D test=StringIterator
+-D test=Calls
 -D analyzer-optimize
 -D analyzer-no-purity-inference
 -D dump=pretty

+ 9 - 3
tests/benchs/src/cases/Calls.hx

@@ -45,7 +45,8 @@ class Calls extends TestCase {
 		var cDynamic:Dynamic = c;
 		var staticClosureCall0 = CallClass.staticCall0;
 		var memberClosureCall0 = c.instanceCall0;
-		function closureCall0() { return null; }
+		function closureCall0() { return c; }
+		function localFunctionCall0() { return null; }
 
 		var suite = new Suite("call with 0 args");
 		suite.add("static", CallClass.staticCall0());
@@ -55,6 +56,7 @@ class Calls extends TestCase {
 		suite.add("interface", cInterface.instanceCall0());
 		suite.add("anon", cAnon.instanceCall0());
 		suite.add("dynamic", cDynamic.instanceCall0());
+		suite.add("local function", localFunctionCall0());
 		suite.add("local closure", closureCall0());
 		suite.add("static closure", staticClosureCall0());
 		suite.add("field closure", memberClosureCall0());
@@ -72,7 +74,8 @@ class Calls extends TestCase {
 		var cDynamic:Dynamic = c;
 		var staticClosureCall1 = CallClass.staticCall1;
 		var memberClosureCall1 = c.instanceCall1;
-		function closureCall1(s1:String) { return null; }
+		function closureCall1(s1:String) { return c; }
+		function localFunctionCall1(s1:String) { return null; }
 
 		var suite = new Suite("call with 1 arg");
 		suite.add("static", CallClass.staticCall1("foo"));
@@ -82,6 +85,7 @@ class Calls extends TestCase {
 		suite.add("interface", cInterface.instanceCall1("foo"));
 		suite.add("anon", cAnon.instanceCall1("foo"));
 		suite.add("dynamic", cDynamic.instanceCall1("foo"));
+		suite.add("local function", localFunctionCall1("foo"));
 		suite.add("local closure", closureCall1("foo"));
 		suite.add("static closure", staticClosureCall1("foo"));
 		suite.add("field closure", memberClosureCall1("foo"));
@@ -99,7 +103,8 @@ class Calls extends TestCase {
 		var cDynamic:Dynamic = c;
 		var staticClosureCall2 = CallClass.staticCall2;
 		var memberClosureCall2 = c.instanceCall2;
-		function closureCall2(s1:String, s2:String) { return null; }
+		function closureCall2(s1:String, s2:String) { return c; }
+		function localFunctionCall2(s1:String, s2:String) { return null; }
 
 		var suite = new Suite("call with 2 args");
 		suite.add("static", CallClass.staticCall2("foo", "bar"));
@@ -109,6 +114,7 @@ class Calls extends TestCase {
 		suite.add("interface", cInterface.instanceCall2("foo", "bar"));
 		suite.add("anon", cAnon.instanceCall2("foo", "bar"));
 		suite.add("dynamic", cDynamic.instanceCall2("foo", "bar"));
+		suite.add("local function", localFunctionCall2("foo", "bar"));
 		suite.add("local closure", closureCall2("foo", "bar"));
 		suite.add("static closure", staticClosureCall2("foo", "bar"));
 		suite.add("field closure", memberClosureCall2("foo", "bar"));