Browse Source

Performance tweaks.

Herby Vojčík 5 years ago
parent
commit
a88b2c9d02
2 changed files with 10 additions and 19 deletions
  1. 6 15
      lang/src/Compiler-Interpreter.js
  2. 4 4
      lang/src/Compiler-Interpreter.st

+ 6 - 15
lang/src/Compiler-Interpreter.js

@@ -2178,30 +2178,25 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $early={};
-try {
-$recv($recv(aNode)._dagChildren())._ifEmpty_ifNotEmpty_((function(){
-throw $early=[aNode];
+return $recv($recv(aNode)._dagChildren())._ifEmpty_ifNotEmpty_((function(){
+return aNode;
 
 }),(function(nodes){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
-throw $early=[$self._visit_($recv(nodes)._first())];
+return $self._visit_($recv(nodes)._first());
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx2) {$ctx2.fillBlock({nodes:nodes},$ctx1,2)});
 //>>excludeEnd("ctx");
 }));
-return self;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"visitDagNode:",{aNode:aNode},$globals.ASTEnterNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aNode"],
-source: "visitDagNode: aNode\x0a\x09aNode dagChildren\x0a\x09\x09ifEmpty: [ ^ aNode ]\x0a\x09\x09ifNotEmpty: [ :nodes | ^ self visit: nodes first ]",
+source: "visitDagNode: aNode\x0a\x09^ aNode dagChildren\x0a\x09\x09ifEmpty: [ aNode ]\x0a\x09\x09ifNotEmpty: [ :nodes | self visit: nodes first ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],
@@ -3939,25 +3934,21 @@ var self=this,$self=this;
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 var $1;
-var $early={};
-try {
 $1=$self._dagChildren();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["dagChildren"]=1;
 //>>excludeEnd("ctx");
 return $recv($1)._at_ifAbsent_($recv($recv($self._dagChildren())._indexOf_(aNode)).__plus((1)),(function(){
-throw $early=[nil];
+return nil;
 
 }));
-}
-catch(e) {if(e===$early)return e[0]; throw e}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"nextSiblingNode:",{aNode:aNode},$globals.ASTNode)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aNode"],
-source: "nextSiblingNode: aNode\x0a\x09\x22Answer the next node after aNode or nil\x22\x0a\x09\x0a\x09^ self dagChildren \x0a\x09\x09at: (self dagChildren indexOf: aNode) + 1\x0a\x09\x09ifAbsent: [ ^ nil ]",
+source: "nextSiblingNode: aNode\x0a\x09\x22Answer the next node after aNode or nil\x22\x0a\x09\x0a\x09^ self dagChildren \x0a\x09\x09at: (self dagChildren indexOf: aNode) + 1\x0a\x09\x09ifAbsent: [ nil ]",
 referencedClasses: [],
 //>>excludeEnd("ide");
 pragmas: [],

+ 4 - 4
lang/src/Compiler-Interpreter.st

@@ -561,9 +561,9 @@ visitBlockNode: aNode
 !
 
 visitDagNode: aNode
-	aNode dagChildren
-		ifEmpty: [ ^ aNode ]
-		ifNotEmpty: [ :nodes | ^ self visit: nodes first ]
+	^ aNode dagChildren
+		ifEmpty: [ aNode ]
+		ifNotEmpty: [ :nodes | self visit: nodes first ]
 !
 
 visitSequenceNode: aNode
@@ -989,7 +989,7 @@ nextSiblingNode: aNode
 	
 	^ self dagChildren 
 		at: (self dagChildren indexOf: aNode) + 1
-		ifAbsent: [ ^ nil ]
+		ifAbsent: [ nil ]
 ! !
 
 !AssignmentNode methodsFor: '*Compiler-Interpreter'!