浏览代码

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);
 
-$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.method({
 selector: "shouldBeAliased",
@@ -1181,24 +1150,6 @@ return $recv(aVisitor)._visitJSStatementNode_(self);
 }; }),
 $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");
@@ -1902,24 +1853,6 @@ return self;
 }; }),
 $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.method({
 selector: "selector",

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

@@ -152,16 +152,6 @@ isValueNode
 
 isVariableNode
 	^ 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
@@ -298,12 +288,6 @@ ASTNode subclass: #JSStatementNode
 !JSStatementNode commentStamp!
 I represent an JavaScript statement node.!
 
-!JSStatementNode methodsFor: 'testing'!
-
-requiresSmalltalkContext
-	^ true
-! !
-
 !JSStatementNode methodsFor: 'visiting'!
 
 acceptDagVisitor: aVisitor
@@ -480,10 +464,6 @@ isNavigationNode
 
 isSendNode
 	^ true
-!
-
-requiresSmalltalkContext
-	^ true
 ! !
 
 !SendNode methodsFor: 'visiting'!

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

@@ -5744,6 +5744,37 @@ return true;
 }; }),
 $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.method({
 selector: "subtreeNeedsAliasing",
@@ -5869,6 +5900,24 @@ return $recv($recv($self._parent())._isSequenceNode())._not();
 }; }),
 $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.method({
 selector: "asReceiver",
@@ -5924,6 +5973,24 @@ return nil;
 }; }),
 $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.method({
 selector: "shouldBeAliased",

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

@@ -1334,6 +1334,16 @@ isReferenced
 	^ 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
 	^ self shouldBeAliased or: [
 		self dagChildren anySatisfy: [ :each | each subtreeNeedsAliasing ] ]
@@ -1357,6 +1367,12 @@ subtreeNeedsAliasing
 	^ self parent isSequenceNode not
 ! !
 
+!JSStatementNode methodsFor: '*Compiler-IR'!
+
+requiresSmalltalkContext
+	^ true
+! !
+
 !PseudoVar methodsFor: '*Compiler-IR'!
 
 asReceiver
@@ -1376,6 +1392,10 @@ asReceiver
 
 !SendNode methodsFor: '*Compiler-IR'!
 
+requiresSmalltalkContext
+	^ true
+!
+
 shouldBeAliased
 	"Because we keep track of send indexes, some send nodes need additional care for aliasing. 
 	See IRJSVisitor >> visitIRSend:"