Browse Source

Compiler: remove superSends (no one uses it)

it is just passed around
Herbert Vojčík 9 years ago
parent
commit
32b13de017
6 changed files with 36 additions and 203 deletions
  1. 1 38
      src/Compiler-AST.js
  2. 1 9
      src/Compiler-AST.st
  3. 3 41
      src/Compiler-IR.js
  4. 1 10
      src/Compiler-IR.st
  5. 27 95
      src/Compiler-Semantic.js
  6. 3 10
      src/Compiler-Semantic.st

+ 1 - 38
src/Compiler-AST.js

@@ -1608,7 +1608,7 @@ $globals.JSStatementNode);
 
 
 
 
 
 
-$core.addClass('MethodNode', $globals.Node, ['selector', 'arguments', 'source', 'scope', 'classReferences', 'sendIndexes', 'superSends'], 'Compiler-AST');
+$core.addClass('MethodNode', $globals.Node, ['selector', 'arguments', 'source', 'scope', 'classReferences', 'sendIndexes'], 'Compiler-AST');
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.MethodNode.comment="I represent an method node.\x0a\x0aA method node must be the root and only method node of a valid AST.";
 $globals.MethodNode.comment="I represent an method node.\x0a\x0aA method node must be the root and only method node of a valid AST.";
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
@@ -1949,43 +1949,6 @@ messageSends: []
 }),
 }),
 $globals.MethodNode);
 $globals.MethodNode);
 
 
-$core.addMethod(
-$core.method({
-selector: "superSends",
-protocol: 'accessing',
-fn: function (){
-var self=this;
-return self["@superSends"];
-
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "superSends\x0a\x09^ superSends",
-referencedClasses: [],
-//>>excludeEnd("ide");
-messageSends: []
-}),
-$globals.MethodNode);
-
-$core.addMethod(
-$core.method({
-selector: "superSends:",
-protocol: 'accessing',
-fn: function (aCollection){
-var self=this;
-self["@superSends"]=aCollection;
-return self;
-
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aCollection"],
-source: "superSends: aCollection\x0a\x09superSends := aCollection",
-referencedClasses: [],
-//>>excludeEnd("ide");
-messageSends: []
-}),
-$globals.MethodNode);
-
 
 
 
 
 $core.addClass('ReturnNode', $globals.Node, ['scope'], 'Compiler-AST');
 $core.addClass('ReturnNode', $globals.Node, ['scope'], 'Compiler-AST');

+ 1 - 9
src/Compiler-AST.st

@@ -378,7 +378,7 @@ accept: aVisitor
 ! !
 ! !
 
 
 Node subclass: #MethodNode
 Node subclass: #MethodNode
-	instanceVariableNames: 'selector arguments source scope classReferences sendIndexes superSends'
+	instanceVariableNames: 'selector arguments source scope classReferences sendIndexes'
 	package: 'Compiler-AST'!
 	package: 'Compiler-AST'!
 !MethodNode commentStamp!
 !MethodNode commentStamp!
 I represent an method node.
 I represent an method node.
@@ -448,14 +448,6 @@ source
 
 
 source: aString
 source: aString
 	source := aString
 	source := aString
-!
-
-superSends
-	^ superSends
-!
-
-superSends: aCollection
-	superSends := aCollection
 ! !
 ! !
 
 
 !MethodNode methodsFor: 'visiting'!
 !MethodNode methodsFor: 'visiting'!

+ 3 - 41
src/Compiler-IR.js

@@ -746,7 +746,6 @@ $recv($2)._theClass_(self._theClass());
 $recv($2)._arguments_($recv(aNode)._arguments());
 $recv($2)._arguments_($recv(aNode)._arguments());
 $recv($2)._selector_($recv(aNode)._selector());
 $recv($2)._selector_($recv(aNode)._selector());
 $recv($2)._sendIndexes_($recv(aNode)._sendIndexes());
 $recv($2)._sendIndexes_($recv(aNode)._sendIndexes());
-$recv($2)._superSends_($recv(aNode)._superSends());
 $recv($2)._requiresSmalltalkContext_($recv(aNode)._requiresSmalltalkContext());
 $recv($2)._requiresSmalltalkContext_($recv(aNode)._requiresSmalltalkContext());
 $recv($2)._classReferences_($recv(aNode)._classReferences());
 $recv($2)._classReferences_($recv(aNode)._classReferences());
 $3=$recv(aNode)._scope();
 $3=$recv(aNode)._scope();
@@ -866,10 +865,10 @@ return self._method();
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aNode"],
 args: ["aNode"],
-source: "visitMethodNode: aNode\x0a\x0a\x09self method: (IRMethod new\x0a\x09\x09source: self source crlfSanitized;\x0a\x09\x09theClass: self theClass;\x0a\x09\x09arguments: aNode arguments;\x0a\x09\x09selector: aNode selector;\x0a\x09\x09sendIndexes: aNode sendIndexes;\x0a\x09\x09superSends: aNode superSends;\x0a\x09\x09requiresSmalltalkContext: aNode requiresSmalltalkContext;\x0a\x09\x09classReferences: aNode classReferences;\x0a\x09\x09scope: aNode scope;\x0a\x09\x09yourself).\x0a\x0a\x09aNode scope temps do: [ :each |\x0a\x09\x09self method add: (IRTempDeclaration new\x0a\x09\x09\x09name: each name;\x0a\x09\x09\x09scope: aNode scope;\x0a\x09\x09\x09yourself) ].\x0a\x0a\x09aNode nodes do: [ :each | self method add: (self visit: each) ].\x0a\x0a\x09aNode scope hasLocalReturn ifFalse: [self method\x0a\x09\x09add: (IRReturn new\x0a\x09\x09\x09add: (IRVariable new\x0a\x09\x09\x09\x09variable: (aNode scope pseudoVars at: 'self');\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself);\x0a\x09\x09add: (IRVerbatim new source: ''; yourself) ].\x0a\x0a\x09^ self method",
+source: "visitMethodNode: aNode\x0a\x0a\x09self method: (IRMethod new\x0a\x09\x09source: self source crlfSanitized;\x0a\x09\x09theClass: self theClass;\x0a\x09\x09arguments: aNode arguments;\x0a\x09\x09selector: aNode selector;\x0a\x09\x09sendIndexes: aNode sendIndexes;\x0a\x09\x09requiresSmalltalkContext: aNode requiresSmalltalkContext;\x0a\x09\x09classReferences: aNode classReferences;\x0a\x09\x09scope: aNode scope;\x0a\x09\x09yourself).\x0a\x0a\x09aNode scope temps do: [ :each |\x0a\x09\x09self method add: (IRTempDeclaration new\x0a\x09\x09\x09name: each name;\x0a\x09\x09\x09scope: aNode scope;\x0a\x09\x09\x09yourself) ].\x0a\x0a\x09aNode nodes do: [ :each | self method add: (self visit: each) ].\x0a\x0a\x09aNode scope hasLocalReturn ifFalse: [self method\x0a\x09\x09add: (IRReturn new\x0a\x09\x09\x09add: (IRVariable new\x0a\x09\x09\x09\x09variable: (aNode scope pseudoVars at: 'self');\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself);\x0a\x09\x09add: (IRVerbatim new source: ''; yourself) ].\x0a\x0a\x09^ self method",
 referencedClasses: ["IRMethod", "IRTempDeclaration", "IRReturn", "IRVariable", "IRVerbatim"],
 referencedClasses: ["IRMethod", "IRTempDeclaration", "IRReturn", "IRVariable", "IRVerbatim"],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["method:", "source:", "new", "crlfSanitized", "source", "theClass:", "theClass", "arguments:", "arguments", "selector:", "selector", "sendIndexes:", "sendIndexes", "superSends:", "superSends", "requiresSmalltalkContext:", "requiresSmalltalkContext", "classReferences:", "classReferences", "scope:", "scope", "yourself", "do:", "temps", "add:", "method", "name:", "name", "nodes", "visit:", "ifFalse:", "hasLocalReturn", "variable:", "at:", "pseudoVars"]
+messageSends: ["method:", "source:", "new", "crlfSanitized", "source", "theClass:", "theClass", "arguments:", "arguments", "selector:", "selector", "sendIndexes:", "sendIndexes", "requiresSmalltalkContext:", "requiresSmalltalkContext", "classReferences:", "classReferences", "scope:", "scope", "yourself", "do:", "temps", "add:", "method", "name:", "name", "nodes", "visit:", "ifFalse:", "hasLocalReturn", "variable:", "at:", "pseudoVars"]
 }),
 }),
 $globals.IRASTTranslator);
 $globals.IRASTTranslator);
 
 
@@ -2014,7 +2013,7 @@ $globals.IRClosure);
 
 
 
 
 
 
-$core.addClass('IRMethod', $globals.IRClosureInstruction, ['theClass', 'source', 'selector', 'classReferences', 'sendIndexes', 'superSends', 'requiresSmalltalkContext', 'internalVariables'], 'Compiler-IR');
+$core.addClass('IRMethod', $globals.IRClosureInstruction, ['theClass', 'source', 'selector', 'classReferences', 'sendIndexes', 'requiresSmalltalkContext', 'internalVariables'], 'Compiler-IR');
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.IRMethod.comment="I am a method instruction";
 $globals.IRMethod.comment="I am a method instruction";
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
@@ -2279,43 +2278,6 @@ messageSends: []
 }),
 }),
 $globals.IRMethod);
 $globals.IRMethod);
 
 
-$core.addMethod(
-$core.method({
-selector: "superSends",
-protocol: 'accessing',
-fn: function (){
-var self=this;
-return self["@superSends"];
-
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "superSends\x0a\x09^ superSends",
-referencedClasses: [],
-//>>excludeEnd("ide");
-messageSends: []
-}),
-$globals.IRMethod);
-
-$core.addMethod(
-$core.method({
-selector: "superSends:",
-protocol: 'accessing',
-fn: function (aCollection){
-var self=this;
-self["@superSends"]=aCollection;
-return self;
-
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: ["aCollection"],
-source: "superSends: aCollection\x0a\x09superSends := aCollection",
-referencedClasses: [],
-//>>excludeEnd("ide");
-messageSends: []
-}),
-$globals.IRMethod);
-
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
 selector: "theClass",
 selector: "theClass",

+ 1 - 10
src/Compiler-IR.st

@@ -183,7 +183,6 @@ visitMethodNode: aNode
 		arguments: aNode arguments;
 		arguments: aNode arguments;
 		selector: aNode selector;
 		selector: aNode selector;
 		sendIndexes: aNode sendIndexes;
 		sendIndexes: aNode sendIndexes;
-		superSends: aNode superSends;
 		requiresSmalltalkContext: aNode requiresSmalltalkContext;
 		requiresSmalltalkContext: aNode requiresSmalltalkContext;
 		classReferences: aNode classReferences;
 		classReferences: aNode classReferences;
 		scope: aNode scope;
 		scope: aNode scope;
@@ -486,7 +485,7 @@ accept: aVisitor
 ! !
 ! !
 
 
 IRClosureInstruction subclass: #IRMethod
 IRClosureInstruction subclass: #IRMethod
-	instanceVariableNames: 'theClass source selector classReferences sendIndexes superSends requiresSmalltalkContext internalVariables'
+	instanceVariableNames: 'theClass source selector classReferences sendIndexes requiresSmalltalkContext internalVariables'
 	package: 'Compiler-IR'!
 	package: 'Compiler-IR'!
 !IRMethod commentStamp!
 !IRMethod commentStamp!
 I am a method instruction!
 I am a method instruction!
@@ -541,14 +540,6 @@ source: aString
 	source := aString
 	source := aString
 !
 !
 
 
-superSends
-	^ superSends
-!
-
-superSends: aCollection
-	superSends := aCollection
-!
-
 theClass
 theClass
 	^ theClass
 	^ theClass
 !
 !

+ 27 - 95
src/Compiler-Semantic.js

@@ -1730,7 +1730,7 @@ $globals.UnknownVar);
 
 
 
 
 
 
-$core.addClass('SemanticAnalyzer', $globals.NodeVisitor, ['currentScope', 'blockIndex', 'thePackage', 'theClass', 'classReferences', 'messageSends', 'superSends'], 'Compiler-Semantic');
+$core.addClass('SemanticAnalyzer', $globals.NodeVisitor, ['currentScope', 'blockIndex', 'thePackage', 'theClass', 'classReferences', 'messageSends'], 'Compiler-Semantic');
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.SemanticAnalyzer.comment="I semantically analyze the abstract syntax tree and annotate it with informations such as non local returns and variable scopes.";
 $globals.SemanticAnalyzer.comment="I semantically analyze the abstract syntax tree and annotate it with informations such as non local returns and variable scopes.";
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
@@ -2078,37 +2078,6 @@ messageSends: ["outerScope:"]
 }),
 }),
 $globals.SemanticAnalyzer);
 $globals.SemanticAnalyzer);
 
 
-$core.addMethod(
-$core.method({
-selector: "superSends",
-protocol: 'accessing',
-fn: function (){
-var self=this;
-function $Dictionary(){return $globals.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx1) {
-//>>excludeEnd("ctx");
-var $1,$receiver;
-$1=self["@superSends"];
-if(($receiver = $1) == null || $receiver.isNil){
-self["@superSends"]=$recv($Dictionary())._new();
-return self["@superSends"];
-} else {
-return $1;
-};
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"superSends",{},$globals.SemanticAnalyzer)});
-//>>excludeEnd("ctx");
-},
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "superSends\x0a\x09^ superSends ifNil: [ superSends := Dictionary new ]",
-referencedClasses: ["Dictionary"],
-//>>excludeEnd("ide");
-messageSends: ["ifNil:", "new"]
-}),
-$globals.SemanticAnalyzer);
-
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
 selector: "theClass",
 selector: "theClass",
@@ -2384,7 +2353,6 @@ $ctx1.supercall = false;
 //>>excludeEnd("ctx");;
 //>>excludeEnd("ctx");;
 $recv(aNode)._classReferences_(self._classReferences());
 $recv(aNode)._classReferences_(self._classReferences());
 $recv(aNode)._sendIndexes_(self._messageSends());
 $recv(aNode)._sendIndexes_(self._messageSends());
-$recv(aNode)._superSends_($recv(self._superSends())._keys());
 self._popScope();
 self._popScope();
 return self;
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -2393,10 +2361,10 @@ return self;
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aNode"],
 args: ["aNode"],
-source: "visitMethodNode: aNode\x0a\x09self pushScope: self newMethodScope.\x0a\x09aNode scope: currentScope.\x0a\x09currentScope node: aNode.\x0a\x0a\x09self theClass allInstanceVariableNames do: [ :each |\x0a\x09\x09currentScope addIVar: each ].\x0a\x09aNode arguments do: [ :each |\x0a\x09\x09self validateVariableScope: each.\x0a\x09\x09currentScope addArg: each ].\x0a\x0a\x09super visitMethodNode: aNode.\x0a\x0a\x09aNode\x0a\x09\x09classReferences: self classReferences;\x0a\x09\x09sendIndexes: self messageSends;\x0a\x09\x09superSends: self superSends keys.\x0a\x09self popScope",
+source: "visitMethodNode: aNode\x0a\x09self pushScope: self newMethodScope.\x0a\x09aNode scope: currentScope.\x0a\x09currentScope node: aNode.\x0a\x0a\x09self theClass allInstanceVariableNames do: [ :each |\x0a\x09\x09currentScope addIVar: each ].\x0a\x09aNode arguments do: [ :each |\x0a\x09\x09self validateVariableScope: each.\x0a\x09\x09currentScope addArg: each ].\x0a\x0a\x09super visitMethodNode: aNode.\x0a\x0a\x09aNode\x0a\x09\x09classReferences: self classReferences;\x0a\x09\x09sendIndexes: self messageSends.\x0a\x09self popScope",
 referencedClasses: [],
 referencedClasses: [],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["pushScope:", "newMethodScope", "scope:", "node:", "do:", "allInstanceVariableNames", "theClass", "addIVar:", "arguments", "validateVariableScope:", "addArg:", "visitMethodNode:", "classReferences:", "classReferences", "sendIndexes:", "messageSends", "superSends:", "keys", "superSends", "popScope"]
+messageSends: ["pushScope:", "newMethodScope", "scope:", "node:", "do:", "allInstanceVariableNames", "theClass", "addIVar:", "arguments", "validateVariableScope:", "addArg:", "visitMethodNode:", "classReferences:", "classReferences", "sendIndexes:", "messageSends", "popScope"]
 }),
 }),
 $globals.SemanticAnalyzer);
 $globals.SemanticAnalyzer);
 
 
@@ -2445,12 +2413,12 @@ selector: "visitSendNode:",
 protocol: 'visiting',
 protocol: 'visiting',
 fn: function (aNode){
 fn: function (aNode){
 var self=this;
 var self=this;
-function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
 function $IRSendInliner(){return $globals.IRSendInliner||(typeof IRSendInliner=="undefined"?nil:IRSendInliner)}
 function $IRSendInliner(){return $globals.IRSendInliner||(typeof IRSendInliner=="undefined"?nil:IRSendInliner)}
+function $Set(){return $globals.Set||(typeof Set=="undefined"?nil:Set)}
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-var $3,$2,$1,$4,$5,$6,$8,$9,$7,$11,$12,$10,$13,$14,$15,$17,$18,$16,$receiver;
+var $3,$2,$1,$4,$6,$7,$5,$8,$9,$10,$12,$13,$11,$receiver;
 $3=$recv(aNode)._receiver();
 $3=$recv(aNode)._receiver();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["receiver"]=1;
 $ctx1.sendIdx["receiver"]=1;
@@ -2464,54 +2432,18 @@ $4=$recv(aNode)._receiver();
 $ctx1.sendIdx["receiver"]=2;
 $ctx1.sendIdx["receiver"]=2;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 $recv($4)._value_("self");
 $recv($4)._value_("self");
-$5=self._superSends();
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["superSends"]=1;
-//>>excludeEnd("ctx");
-$6=$recv(aNode)._selector();
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["selector"]=1;
-//>>excludeEnd("ctx");
-$recv($5)._at_ifAbsentPut_($6,(function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-return $recv($Set())._new();
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx2.sendIdx["new"]=1;
-//>>excludeEnd("ctx");
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
-//>>excludeEnd("ctx");
-}));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["at:ifAbsentPut:"]=1;
-//>>excludeEnd("ctx");
-$8=self._superSends();
-$9=$recv(aNode)._selector();
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["selector"]=2;
-//>>excludeEnd("ctx");
-$7=$recv($8)._at_($9);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["at:"]=1;
-//>>excludeEnd("ctx");
-$recv($7)._add_(aNode);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["add:"]=1;
-//>>excludeEnd("ctx");
 } else {
 } else {
-$11=$recv($IRSendInliner())._inlinedSelectors();
-$12=$recv(aNode)._selector();
+$6=$recv($IRSendInliner())._inlinedSelectors();
+$7=$recv(aNode)._selector();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["selector"]=3;
+$ctx1.sendIdx["selector"]=1;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$10=$recv($11)._includes_($12);
-if($core.assert($10)){
+$5=$recv($6)._includes_($7);
+if($core.assert($5)){
 $recv(aNode)._shouldBeInlined_(true);
 $recv(aNode)._shouldBeInlined_(true);
-$13=$recv(aNode)._receiver();
-if(($receiver = $13) == null || $receiver.isNil){
-$13;
+$8=$recv(aNode)._receiver();
+if(($receiver = $8) == null || $receiver.isNil){
+$8;
 } else {
 } else {
 var receiver;
 var receiver;
 receiver=$receiver;
 receiver=$receiver;
@@ -2519,36 +2451,36 @@ $recv(receiver)._shouldBeAliased_(true);
 };
 };
 };
 };
 };
 };
-$14=self._messageSends();
+$9=self._messageSends();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["messageSends"]=1;
 $ctx1.sendIdx["messageSends"]=1;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$15=$recv(aNode)._selector();
+$10=$recv(aNode)._selector();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["selector"]=4;
+$ctx1.sendIdx["selector"]=2;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$recv($14)._at_ifAbsentPut_($15,(function(){
+$recv($9)._at_ifAbsentPut_($10,(function(){
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx2) {
 return $core.withContext(function($ctx2) {
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 return $recv($Set())._new();
 return $recv($Set())._new();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
 }));
 }));
-$17=self._messageSends();
+$12=self._messageSends();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.sendIdx["messageSends"]=2;
 $ctx1.sendIdx["messageSends"]=2;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$18=$recv(aNode)._selector();
+$13=$recv(aNode)._selector();
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["selector"]=5;
+$ctx1.sendIdx["selector"]=3;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$16=$recv($17)._at_($18);
+$11=$recv($12)._at_($13);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-$ctx1.sendIdx["at:"]=2;
+$ctx1.sendIdx["at:"]=1;
 //>>excludeEnd("ctx");
 //>>excludeEnd("ctx");
-$recv($16)._add_(aNode);
+$recv($11)._add_(aNode);
 $recv(aNode)._index_($recv($recv(self._messageSends())._at_($recv(aNode)._selector()))._size());
 $recv(aNode)._index_($recv($recv(self._messageSends())._at_($recv(aNode)._selector()))._size());
 (
 (
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
@@ -2565,10 +2497,10 @@ return self;
 },
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aNode"],
 args: ["aNode"],
-source: "visitSendNode: aNode\x0a\x0a\x09aNode receiver value = 'super'\x0a\x09\x09ifTrue: [\x0a\x09\x09\x09aNode superSend: true.\x0a\x09\x09\x09aNode receiver value: 'self'.\x0a\x09\x09\x09self superSends at: aNode selector ifAbsentPut: [ Set new ].\x0a\x09\x09\x09(self superSends at: aNode selector) add: aNode ]\x0a\x09\x09\x0a\x09\x09ifFalse: [ (IRSendInliner inlinedSelectors includes: aNode selector) ifTrue: [\x0a\x09\x09\x09aNode shouldBeInlined: true.\x0a\x09\x09\x09aNode receiver ifNotNil: [ :receiver |\x0a\x09\x09\x09\x09receiver shouldBeAliased: true ] ] ].\x0a\x0a\x09self messageSends at: aNode selector ifAbsentPut: [ Set new ].\x0a\x09(self messageSends at: aNode selector) add: aNode.\x0a\x0a\x09aNode index: (self messageSends at: aNode selector) size.\x0a\x0a\x09super visitSendNode: aNode",
-referencedClasses: ["Set", "IRSendInliner"],
+source: "visitSendNode: aNode\x0a\x0a\x09aNode receiver value = 'super'\x0a\x09\x09ifTrue: [\x0a\x09\x09\x09aNode superSend: true.\x0a\x09\x09\x09aNode receiver value: 'self' ]\x0a\x09\x09\x0a\x09\x09ifFalse: [ (IRSendInliner inlinedSelectors includes: aNode selector) ifTrue: [\x0a\x09\x09\x09aNode shouldBeInlined: true.\x0a\x09\x09\x09aNode receiver ifNotNil: [ :receiver |\x0a\x09\x09\x09\x09receiver shouldBeAliased: true ] ] ].\x0a\x0a\x09self messageSends at: aNode selector ifAbsentPut: [ Set new ].\x0a\x09(self messageSends at: aNode selector) add: aNode.\x0a\x0a\x09aNode index: (self messageSends at: aNode selector) size.\x0a\x0a\x09super visitSendNode: aNode",
+referencedClasses: ["IRSendInliner", "Set"],
 //>>excludeEnd("ide");
 //>>excludeEnd("ide");
-messageSends: ["ifTrue:ifFalse:", "=", "value", "receiver", "superSend:", "value:", "at:ifAbsentPut:", "superSends", "selector", "new", "add:", "at:", "ifTrue:", "includes:", "inlinedSelectors", "shouldBeInlined:", "ifNotNil:", "shouldBeAliased:", "messageSends", "index:", "size", "visitSendNode:"]
+messageSends: ["ifTrue:ifFalse:", "=", "value", "receiver", "superSend:", "value:", "ifTrue:", "includes:", "inlinedSelectors", "selector", "shouldBeInlined:", "ifNotNil:", "shouldBeAliased:", "at:ifAbsentPut:", "messageSends", "new", "add:", "at:", "index:", "size", "visitSendNode:"]
 }),
 }),
 $globals.SemanticAnalyzer);
 $globals.SemanticAnalyzer);
 
 

+ 3 - 10
src/Compiler-Semantic.st

@@ -410,7 +410,7 @@ isUnknownVar
 ! !
 ! !
 
 
 NodeVisitor subclass: #SemanticAnalyzer
 NodeVisitor subclass: #SemanticAnalyzer
-	instanceVariableNames: 'currentScope blockIndex thePackage theClass classReferences messageSends superSends'
+	instanceVariableNames: 'currentScope blockIndex thePackage theClass classReferences messageSends'
 	package: 'Compiler-Semantic'!
 	package: 'Compiler-Semantic'!
 !SemanticAnalyzer commentStamp!
 !SemanticAnalyzer commentStamp!
 I semantically analyze the abstract syntax tree and annotate it with informations such as non local returns and variable scopes.!
 I semantically analyze the abstract syntax tree and annotate it with informations such as non local returns and variable scopes.!
@@ -425,10 +425,6 @@ messageSends
 	^ messageSends ifNil: [ messageSends := Dictionary new ]
 	^ messageSends ifNil: [ messageSends := Dictionary new ]
 !
 !
 
 
-superSends
-	^ superSends ifNil: [ superSends := Dictionary new ]
-!
-
 theClass
 theClass
 	^ theClass
 	^ theClass
 !
 !
@@ -574,8 +570,7 @@ visitMethodNode: aNode
 
 
 	aNode
 	aNode
 		classReferences: self classReferences;
 		classReferences: self classReferences;
-		sendIndexes: self messageSends;
-		superSends: self superSends keys.
+		sendIndexes: self messageSends.
 	self popScope
 	self popScope
 !
 !
 
 
@@ -592,9 +587,7 @@ visitSendNode: aNode
 	aNode receiver value = 'super'
 	aNode receiver value = 'super'
 		ifTrue: [
 		ifTrue: [
 			aNode superSend: true.
 			aNode superSend: true.
-			aNode receiver value: 'self'.
-			self superSends at: aNode selector ifAbsentPut: [ Set new ].
-			(self superSends at: aNode selector) add: aNode ]
+			aNode receiver value: 'self' ]
 		
 		
 		ifFalse: [ (IRSendInliner inlinedSelectors includes: aNode selector) ifTrue: [
 		ifFalse: [ (IRSendInliner inlinedSelectors includes: aNode selector) ifTrue: [
 			aNode shouldBeInlined: true.
 			aNode shouldBeInlined: true.