From e81bcef1b239be9f9fe40122e3b58dd46688336a Mon Sep 17 00:00:00 2001
From: Per Hedbor <ph@opera.com>
Date: Mon, 25 Jun 2012 20:13:15 +0200
Subject: [PATCH] Minimize overhead in the (sadly needed) body of the loop.

If the body of the loop is removed, the foreach() is optimized away.
Also, the assignment of the global counter is removed as well in the
versions that use a global variable, which is really a bug.
---
 lib/modules/Tools.pmod/Shoot.pmod/Foreach.pike  | 4 +---
 lib/modules/Tools.pmod/Shoot.pmod/Foreach2.pike | 4 +---
 lib/modules/Tools.pmod/Shoot.pmod/Foreach3.pike | 2 +-
 lib/modules/Tools.pmod/Shoot.pmod/Foreach4.pike | 2 +-
 4 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/lib/modules/Tools.pmod/Shoot.pmod/Foreach.pike b/lib/modules/Tools.pmod/Shoot.pmod/Foreach.pike
index cfbba15b86..ad387cc72f 100644
--- a/lib/modules/Tools.pmod/Shoot.pmod/Foreach.pike
+++ b/lib/modules/Tools.pmod/Shoot.pmod/Foreach.pike
@@ -9,10 +9,8 @@ int n;
 void perform()
 {
     int res;
-
     foreach( const, int i )
-        res ++;
-
+        res=1;
     n=sizeof(const);
 }
 
diff --git a/lib/modules/Tools.pmod/Shoot.pmod/Foreach2.pike b/lib/modules/Tools.pmod/Shoot.pmod/Foreach2.pike
index 0cc4fec757..46f8c448c7 100644
--- a/lib/modules/Tools.pmod/Shoot.pmod/Foreach2.pike
+++ b/lib/modules/Tools.pmod/Shoot.pmod/Foreach2.pike
@@ -9,10 +9,8 @@ int n;
 void perform()
 {
     int res;
-
     foreach( const;int ind; int i )
-        res ++;
-
+        res=1;
     n=sizeof(const);
 }
 
diff --git a/lib/modules/Tools.pmod/Shoot.pmod/Foreach3.pike b/lib/modules/Tools.pmod/Shoot.pmod/Foreach3.pike
index 3e1a82f1b1..db06452d6b 100644
--- a/lib/modules/Tools.pmod/Shoot.pmod/Foreach3.pike
+++ b/lib/modules/Tools.pmod/Shoot.pmod/Foreach3.pike
@@ -10,7 +10,7 @@ void perform()
 {
     int res;
     foreach( const;;n )
-        res ++;
+        res=1;
     n++;
 }
 
diff --git a/lib/modules/Tools.pmod/Shoot.pmod/Foreach4.pike b/lib/modules/Tools.pmod/Shoot.pmod/Foreach4.pike
index aed3362371..a17b932ae8 100644
--- a/lib/modules/Tools.pmod/Shoot.pmod/Foreach4.pike
+++ b/lib/modules/Tools.pmod/Shoot.pmod/Foreach4.pike
@@ -10,7 +10,7 @@ void perform()
 {
     int res;
     foreach( const;int ind;n )
-        res ++;
+        res=1;
     n++;
 }
 
-- 
GitLab