1
0
ソースを参照

Compiler: Move #requiresSmalltalkContext to IR package.

Herby Vojčík 5 年 前
コミット
a01417ca15
4 ファイル変更87 行追加87 行削除
  1. 0 67
      lang/src/Compiler-AST.js
  2. 0 20
      lang/src/Compiler-AST.st
  3. 67 0
      lang/src/Compiler-IR.js
  4. 20 0
      lang/src/Compiler-IR.st

+ 0 - 67
lang/src/Compiler-AST.js

@@ -545,37 +545,6 @@ return $self._position();
 }; }),
 }; }),
 $globals.ASTNode);
 $globals.ASTNode);
 
 
-$core.addMethod(
-$core.method({
-selector: "requiresSmalltalkContext",
-protocol: "testing",
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "requiresSmalltalkContext\x0a\x09\x22Answer true if the receiver requires a smalltalk context.\x0a\x09Only send nodes require a context.\x0a\x09\x0a\x09If no node requires a context, the method will be compiled without one.\x0a\x09See `IRJSTranslator` and `JSStream` for context creation\x22\x0a\x09\x0a\x09^ self dagChildren anySatisfy: [ :each | each requiresSmalltalkContext ]",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: ["anySatisfy:", "dagChildren", "requiresSmalltalkContext"]
-}, function ($methodClass){ return function (){
-var self=this,$self=this;
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx1) {
-//>>excludeEnd("ctx");
-return $recv($self._dagChildren())._anySatisfy_((function(each){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-return $recv(each)._requiresSmalltalkContext();
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
-//>>excludeEnd("ctx");
-}));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"requiresSmalltalkContext",{})});
-//>>excludeEnd("ctx");
-}; }),
-$globals.ASTNode);
-
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
 selector: "shouldBeAliased",
 selector: "shouldBeAliased",
@@ -1181,24 +1150,6 @@ return $recv(aVisitor)._visitJSStatementNode_(self);
 }; }),
 }; }),
 $globals.JSStatementNode);
 $globals.JSStatementNode);
 
 
-$core.addMethod(
-$core.method({
-selector: "requiresSmalltalkContext",
-protocol: "testing",
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "requiresSmalltalkContext\x0a\x09^ true",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: []
-}, function ($methodClass){ return function (){
-var self=this,$self=this;
-return true;
-
-}; }),
-$globals.JSStatementNode);
-
 
 
 
 
 $core.addClass("MethodNode", $globals.ASTNode, ["selector", "arguments", "pragmas", "scope", "classReferences", "sendIndexes"], "Compiler-AST");
 $core.addClass("MethodNode", $globals.ASTNode, ["selector", "arguments", "pragmas", "scope", "classReferences", "sendIndexes"], "Compiler-AST");
@@ -1902,24 +1853,6 @@ return self;
 }; }),
 }; }),
 $globals.SendNode);
 $globals.SendNode);
 
 
-$core.addMethod(
-$core.method({
-selector: "requiresSmalltalkContext",
-protocol: "testing",
-//>>excludeStart("ide", pragmas.excludeIdeData);
-args: [],
-source: "requiresSmalltalkContext\x0a\x09^ true",
-referencedClasses: [],
-//>>excludeEnd("ide");
-pragmas: [],
-messageSends: []
-}, function ($methodClass){ return function (){
-var self=this,$self=this;
-return true;
-
-}; }),
-$globals.SendNode);
-
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
 selector: "selector",
 selector: "selector",

+ 0 - 20
lang/src/Compiler-AST.st

@@ -152,16 +152,6 @@ isValueNode
 
 
 isVariableNode
 isVariableNode
 	^ false
 	^ false
-!
-
-requiresSmalltalkContext
-	"Answer true if the receiver requires a smalltalk context.
-	Only send nodes require a context.
-	
-	If no node requires a context, the method will be compiled without one.
-	See `IRJSTranslator` and `JSStream` for context creation"
-	
-	^ self dagChildren anySatisfy: [ :each | each requiresSmalltalkContext ]
 ! !
 ! !
 
 
 ASTNode subclass: #AssignmentNode
 ASTNode subclass: #AssignmentNode
@@ -298,12 +288,6 @@ ASTNode subclass: #JSStatementNode
 !JSStatementNode commentStamp!
 !JSStatementNode commentStamp!
 I represent an JavaScript statement node.!
 I represent an JavaScript statement node.!
 
 
-!JSStatementNode methodsFor: 'testing'!
-
-requiresSmalltalkContext
-	^ true
-! !
-
 !JSStatementNode methodsFor: 'visiting'!
 !JSStatementNode methodsFor: 'visiting'!
 
 
 acceptDagVisitor: aVisitor
 acceptDagVisitor: aVisitor
@@ -480,10 +464,6 @@ isNavigationNode
 
 
 isSendNode
 isSendNode
 	^ true
 	^ true
-!
-
-requiresSmalltalkContext
-	^ true
 ! !
 ! !
 
 
 !SendNode methodsFor: 'visiting'!
 !SendNode methodsFor: 'visiting'!

+ 67 - 0
lang/src/Compiler-IR.js

@@ -5744,6 +5744,37 @@ return true;
 }; }),
 }; }),
 $globals.ASTNode);
 $globals.ASTNode);
 
 
+$core.addMethod(
+$core.method({
+selector: "requiresSmalltalkContext",
+protocol: "*Compiler-IR",
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "requiresSmalltalkContext\x0a\x09\x22Answer true if the receiver requires a smalltalk context.\x0a\x09Only send nodes require a context.\x0a\x09\x0a\x09If no node requires a context, the method will be compiled without one.\x0a\x09See `IRJSTranslator` and `JSStream` for context creation\x22\x0a\x09\x0a\x09^ self dagChildren anySatisfy: [ :each | each requiresSmalltalkContext ]",
+referencedClasses: [],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: ["anySatisfy:", "dagChildren", "requiresSmalltalkContext"]
+}, function ($methodClass){ return function (){
+var self=this,$self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+return $recv($self._dagChildren())._anySatisfy_((function(each){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
+return $recv(each)._requiresSmalltalkContext();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"requiresSmalltalkContext",{})});
+//>>excludeEnd("ctx");
+}; }),
+$globals.ASTNode);
+
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
 selector: "subtreeNeedsAliasing",
 selector: "subtreeNeedsAliasing",
@@ -5869,6 +5900,24 @@ return $recv($recv($self._parent())._isSequenceNode())._not();
 }; }),
 }; }),
 $globals.CascadeNode);
 $globals.CascadeNode);
 
 
+$core.addMethod(
+$core.method({
+selector: "requiresSmalltalkContext",
+protocol: "*Compiler-IR",
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "requiresSmalltalkContext\x0a\x09^ true",
+referencedClasses: [],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: []
+}, function ($methodClass){ return function (){
+var self=this,$self=this;
+return true;
+
+}; }),
+$globals.JSStatementNode);
+
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
 selector: "asReceiver",
 selector: "asReceiver",
@@ -5924,6 +5973,24 @@ return nil;
 }; }),
 }; }),
 $globals.ScopeVar);
 $globals.ScopeVar);
 
 
+$core.addMethod(
+$core.method({
+selector: "requiresSmalltalkContext",
+protocol: "*Compiler-IR",
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "requiresSmalltalkContext\x0a\x09^ true",
+referencedClasses: [],
+//>>excludeEnd("ide");
+pragmas: [],
+messageSends: []
+}, function ($methodClass){ return function (){
+var self=this,$self=this;
+return true;
+
+}; }),
+$globals.SendNode);
+
 $core.addMethod(
 $core.addMethod(
 $core.method({
 $core.method({
 selector: "shouldBeAliased",
 selector: "shouldBeAliased",

+ 20 - 0
lang/src/Compiler-IR.st

@@ -1334,6 +1334,16 @@ isReferenced
 	^ true
 	^ true
 !
 !
 
 
+requiresSmalltalkContext
+	"Answer true if the receiver requires a smalltalk context.
+	Only send nodes require a context.
+	
+	If no node requires a context, the method will be compiled without one.
+	See `IRJSTranslator` and `JSStream` for context creation"
+	
+	^ self dagChildren anySatisfy: [ :each | each requiresSmalltalkContext ]
+!
+
 subtreeNeedsAliasing
 subtreeNeedsAliasing
 	^ self shouldBeAliased or: [
 	^ self shouldBeAliased or: [
 		self dagChildren anySatisfy: [ :each | each subtreeNeedsAliasing ] ]
 		self dagChildren anySatisfy: [ :each | each subtreeNeedsAliasing ] ]
@@ -1357,6 +1367,12 @@ subtreeNeedsAliasing
 	^ self parent isSequenceNode not
 	^ self parent isSequenceNode not
 ! !
 ! !
 
 
+!JSStatementNode methodsFor: '*Compiler-IR'!
+
+requiresSmalltalkContext
+	^ true
+! !
+
 !PseudoVar methodsFor: '*Compiler-IR'!
 !PseudoVar methodsFor: '*Compiler-IR'!
 
 
 asReceiver
 asReceiver
@@ -1376,6 +1392,10 @@ asReceiver
 
 
 !SendNode methodsFor: '*Compiler-IR'!
 !SendNode methodsFor: '*Compiler-IR'!
 
 
+requiresSmalltalkContext
+	^ true
+!
+
 shouldBeAliased
 shouldBeAliased
 	"Because we keep track of send indexes, some send nodes need additional care for aliasing. 
 	"Because we keep track of send indexes, some send nodes need additional care for aliasing. 
 	See IRJSVisitor >> visitIRSend:"
 	See IRJSVisitor >> visitIRSend:"