2
0

Compiler-Interpreter.deploy.js 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524
  1. smalltalk.addPackage('Compiler-Interpreter');
  2. smalltalk.addClass('AIContext', smalltalk.NodeVisitor, ['methodContext', 'outerContext', 'pc', 'locals', 'method'], 'Compiler-Interpreter');
  3. smalltalk.addMethod(
  4. smalltalk.method({
  5. selector: "asString",
  6. fn: function (){
  7. var self=this;
  8. return smalltalk.withContext(function($ctx1) {
  9. var $1;
  10. $1=_st(self["@methodContext"])._asString();
  11. return $1;
  12. }, function($ctx1) {$ctx1.fill(self,"asString",{},smalltalk.AIContext)})},
  13. messageSends: ["asString"]}),
  14. smalltalk.AIContext);
  15. smalltalk.addMethod(
  16. smalltalk.method({
  17. selector: "home",
  18. fn: function (){
  19. var self=this;
  20. return smalltalk.withContext(function($ctx1) {
  21. var $2,$1;
  22. $2=_st(self)._isBlockContext();
  23. if(smalltalk.assert($2)){
  24. $1=_st(_st(self)._outerContext())._methodContext();
  25. } else {
  26. $1=self;
  27. };
  28. return $1;
  29. }, function($ctx1) {$ctx1.fill(self,"home",{},smalltalk.AIContext)})},
  30. messageSends: ["ifTrue:ifFalse:", "methodContext", "outerContext", "isBlockContext"]}),
  31. smalltalk.AIContext);
  32. smalltalk.addMethod(
  33. smalltalk.method({
  34. selector: "initializeFromMethodContext:",
  35. fn: function (aMethodContext){
  36. var self=this;
  37. return smalltalk.withContext(function($ctx1) {
  38. var $1;
  39. self["@methodContext"]=aMethodContext;
  40. _st(self)._pc_(_st(aMethodContext)._pc());
  41. _st(self)._receiver_(_st(aMethodContext)._receiver());
  42. _st(self)._method_(_st(aMethodContext)._method());
  43. $1=_st(aMethodContext)._outerContext();
  44. if(($receiver = $1) == nil || $receiver == undefined){
  45. $1;
  46. } else {
  47. _st(self)._outerContext_(_st(_st(self)._class())._fromMethodContext_(_st(aMethodContext)._outerContext()));
  48. };
  49. _st(_st(aMethodContext)._locals())._keysAndValuesDo_((function(key,value){
  50. return smalltalk.withContext(function($ctx2) {
  51. return _st(_st(self)._locals())._at_put_(key,value);
  52. }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1)})}));
  53. return self}, function($ctx1) {$ctx1.fill(self,"initializeFromMethodContext:",{aMethodContext:aMethodContext},smalltalk.AIContext)})},
  54. messageSends: ["pc:", "pc", "receiver:", "receiver", "method:", "method", "ifNotNil:", "outerContext:", "fromMethodContext:", "outerContext", "class", "keysAndValuesDo:", "at:put:", "locals"]}),
  55. smalltalk.AIContext);
  56. smalltalk.addMethod(
  57. smalltalk.method({
  58. selector: "initializeLocals",
  59. fn: function (){
  60. var self=this;
  61. function $Dictionary(){return smalltalk.Dictionary||(typeof Dictionary=="undefined"?nil:Dictionary)}
  62. return smalltalk.withContext(function($ctx1) {
  63. self["@locals"]=_st($Dictionary())._new();
  64. _st(self["@locals"])._at_put_("thisContext",self);
  65. return self}, function($ctx1) {$ctx1.fill(self,"initializeLocals",{},smalltalk.AIContext)})},
  66. messageSends: ["new", "at:put:"]}),
  67. smalltalk.AIContext);
  68. smalltalk.addMethod(
  69. smalltalk.method({
  70. selector: "isBlockContext",
  71. fn: function (){
  72. var self=this;
  73. return smalltalk.withContext(function($ctx1) {
  74. var $1;
  75. $1=_st(self["@methodContext"])._isBlockContext();
  76. return $1;
  77. }, function($ctx1) {$ctx1.fill(self,"isBlockContext",{},smalltalk.AIContext)})},
  78. messageSends: ["isBlockContext"]}),
  79. smalltalk.AIContext);
  80. smalltalk.addMethod(
  81. smalltalk.method({
  82. selector: "localAt:",
  83. fn: function (aString){
  84. var self=this;
  85. return smalltalk.withContext(function($ctx1) {
  86. var $1;
  87. $1=_st(_st(self)._locals())._at_ifAbsent_(aString,(function(){
  88. return smalltalk.withContext(function($ctx2) {
  89. return nil;
  90. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
  91. return $1;
  92. }, function($ctx1) {$ctx1.fill(self,"localAt:",{aString:aString},smalltalk.AIContext)})},
  93. messageSends: ["at:ifAbsent:", "locals"]}),
  94. smalltalk.AIContext);
  95. smalltalk.addMethod(
  96. smalltalk.method({
  97. selector: "localAt:put:",
  98. fn: function (aString,anObject){
  99. var self=this;
  100. return smalltalk.withContext(function($ctx1) {
  101. _st(_st(self)._locals())._at_put_(aString,anObject);
  102. return self}, function($ctx1) {$ctx1.fill(self,"localAt:put:",{aString:aString,anObject:anObject},smalltalk.AIContext)})},
  103. messageSends: ["at:put:", "locals"]}),
  104. smalltalk.AIContext);
  105. smalltalk.addMethod(
  106. smalltalk.method({
  107. selector: "locals",
  108. fn: function (){
  109. var self=this;
  110. return smalltalk.withContext(function($ctx1) {
  111. var $1,$2;
  112. $1=self["@locals"];
  113. if(($receiver = $1) == nil || $receiver == undefined){
  114. _st(self)._initializeLocals();
  115. } else {
  116. $1;
  117. };
  118. $2=self["@locals"];
  119. return $2;
  120. }, function($ctx1) {$ctx1.fill(self,"locals",{},smalltalk.AIContext)})},
  121. messageSends: ["ifNil:", "initializeLocals"]}),
  122. smalltalk.AIContext);
  123. smalltalk.addMethod(
  124. smalltalk.method({
  125. selector: "method",
  126. fn: function (){
  127. var self=this;
  128. return smalltalk.withContext(function($ctx1) {
  129. var $1;
  130. $1=self["@method"];
  131. return $1;
  132. }, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.AIContext)})},
  133. messageSends: []}),
  134. smalltalk.AIContext);
  135. smalltalk.addMethod(
  136. smalltalk.method({
  137. selector: "method:",
  138. fn: function (aCompiledMethod){
  139. var self=this;
  140. return smalltalk.withContext(function($ctx1) {
  141. self["@method"]=aCompiledMethod;
  142. return self}, function($ctx1) {$ctx1.fill(self,"method:",{aCompiledMethod:aCompiledMethod},smalltalk.AIContext)})},
  143. messageSends: []}),
  144. smalltalk.AIContext);
  145. smalltalk.addMethod(
  146. smalltalk.method({
  147. selector: "outerContext",
  148. fn: function (){
  149. var self=this;
  150. return smalltalk.withContext(function($ctx1) {
  151. var $1;
  152. $1=self["@outerContext"];
  153. return $1;
  154. }, function($ctx1) {$ctx1.fill(self,"outerContext",{},smalltalk.AIContext)})},
  155. messageSends: []}),
  156. smalltalk.AIContext);
  157. smalltalk.addMethod(
  158. smalltalk.method({
  159. selector: "outerContext:",
  160. fn: function (anAIContext){
  161. var self=this;
  162. return smalltalk.withContext(function($ctx1) {
  163. self["@outerContext"]=anAIContext;
  164. return self}, function($ctx1) {$ctx1.fill(self,"outerContext:",{anAIContext:anAIContext},smalltalk.AIContext)})},
  165. messageSends: []}),
  166. smalltalk.AIContext);
  167. smalltalk.addMethod(
  168. smalltalk.method({
  169. selector: "pc",
  170. fn: function (){
  171. var self=this;
  172. return smalltalk.withContext(function($ctx1) {
  173. var $2,$1;
  174. $2=self["@pc"];
  175. if(($receiver = $2) == nil || $receiver == undefined){
  176. self["@pc"]=(0);
  177. $1=self["@pc"];
  178. } else {
  179. $1=$2;
  180. };
  181. return $1;
  182. }, function($ctx1) {$ctx1.fill(self,"pc",{},smalltalk.AIContext)})},
  183. messageSends: ["ifNil:"]}),
  184. smalltalk.AIContext);
  185. smalltalk.addMethod(
  186. smalltalk.method({
  187. selector: "pc:",
  188. fn: function (anInteger){
  189. var self=this;
  190. return smalltalk.withContext(function($ctx1) {
  191. self["@pc"]=anInteger;
  192. return self}, function($ctx1) {$ctx1.fill(self,"pc:",{anInteger:anInteger},smalltalk.AIContext)})},
  193. messageSends: []}),
  194. smalltalk.AIContext);
  195. smalltalk.addMethod(
  196. smalltalk.method({
  197. selector: "receiver",
  198. fn: function (){
  199. var self=this;
  200. return smalltalk.withContext(function($ctx1) {
  201. var $1;
  202. $1=_st(self)._localAt_("self");
  203. return $1;
  204. }, function($ctx1) {$ctx1.fill(self,"receiver",{},smalltalk.AIContext)})},
  205. messageSends: ["localAt:"]}),
  206. smalltalk.AIContext);
  207. smalltalk.addMethod(
  208. smalltalk.method({
  209. selector: "receiver:",
  210. fn: function (anObject){
  211. var self=this;
  212. return smalltalk.withContext(function($ctx1) {
  213. _st(self)._localAt_put_("self",anObject);
  214. return self}, function($ctx1) {$ctx1.fill(self,"receiver:",{anObject:anObject},smalltalk.AIContext)})},
  215. messageSends: ["localAt:put:"]}),
  216. smalltalk.AIContext);
  217. smalltalk.addMethod(
  218. smalltalk.method({
  219. selector: "selector",
  220. fn: function (){
  221. var self=this;
  222. return smalltalk.withContext(function($ctx1) {
  223. var $2,$1;
  224. $2=_st(self)._method();
  225. if(($receiver = $2) == nil || $receiver == undefined){
  226. $1=$2;
  227. } else {
  228. $1=_st(_st(self)._method())._selector();
  229. };
  230. return $1;
  231. }, function($ctx1) {$ctx1.fill(self,"selector",{},smalltalk.AIContext)})},
  232. messageSends: ["ifNotNil:", "selector", "method"]}),
  233. smalltalk.AIContext);
  234. smalltalk.addMethod(
  235. smalltalk.method({
  236. selector: "fromMethodContext:",
  237. fn: function (aMethodContext){
  238. var self=this;
  239. return smalltalk.withContext(function($ctx1) {
  240. var $2,$3,$1;
  241. $2=_st(self)._new();
  242. _st($2)._initializeFromMethodContext_(aMethodContext);
  243. $3=_st($2)._yourself();
  244. $1=$3;
  245. return $1;
  246. }, function($ctx1) {$ctx1.fill(self,"fromMethodContext:",{aMethodContext:aMethodContext},smalltalk.AIContext.klass)})},
  247. messageSends: ["initializeFromMethodContext:", "new", "yourself"]}),
  248. smalltalk.AIContext.klass);
  249. smalltalk.addClass('ASTDebugger', smalltalk.Object, ['interpreter', 'context'], 'Compiler-Interpreter');
  250. smalltalk.addMethod(
  251. smalltalk.method({
  252. selector: "atEnd",
  253. fn: function (){
  254. var self=this;
  255. return smalltalk.withContext(function($ctx1) {
  256. var $1;
  257. $1=_st(_st(self)._interpreter())._atEnd();
  258. return $1;
  259. }, function($ctx1) {$ctx1.fill(self,"atEnd",{},smalltalk.ASTDebugger)})},
  260. messageSends: ["atEnd", "interpreter"]}),
  261. smalltalk.ASTDebugger);
  262. smalltalk.addMethod(
  263. smalltalk.method({
  264. selector: "buildAST",
  265. fn: function (){
  266. var self=this;
  267. var ast;
  268. function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  269. function $SemanticAnalyzer(){return smalltalk.SemanticAnalyzer||(typeof SemanticAnalyzer=="undefined"?nil:SemanticAnalyzer)}
  270. return smalltalk.withContext(function($ctx1) {
  271. var $1;
  272. ast=_st(_st($Smalltalk())._current())._parse_(_st(_st(self)._method())._source());
  273. _st(_st($SemanticAnalyzer())._on_(_st(_st(_st(self)._context())._receiver())._class()))._visit_(ast);
  274. $1=ast;
  275. return $1;
  276. }, function($ctx1) {$ctx1.fill(self,"buildAST",{ast:ast},smalltalk.ASTDebugger)})},
  277. messageSends: ["parse:", "source", "method", "current", "visit:", "on:", "class", "receiver", "context"]}),
  278. smalltalk.ASTDebugger);
  279. smalltalk.addMethod(
  280. smalltalk.method({
  281. selector: "context",
  282. fn: function (){
  283. var self=this;
  284. return smalltalk.withContext(function($ctx1) {
  285. var $1;
  286. $1=self["@context"];
  287. return $1;
  288. }, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.ASTDebugger)})},
  289. messageSends: []}),
  290. smalltalk.ASTDebugger);
  291. smalltalk.addMethod(
  292. smalltalk.method({
  293. selector: "context:",
  294. fn: function (aContext){
  295. var self=this;
  296. return smalltalk.withContext(function($ctx1) {
  297. self["@context"]=aContext;
  298. return self}, function($ctx1) {$ctx1.fill(self,"context:",{aContext:aContext},smalltalk.ASTDebugger)})},
  299. messageSends: []}),
  300. smalltalk.ASTDebugger);
  301. smalltalk.addMethod(
  302. smalltalk.method({
  303. selector: "defaultInterpreterClass",
  304. fn: function (){
  305. var self=this;
  306. function $ASTSteppingInterpreter(){return smalltalk.ASTSteppingInterpreter||(typeof ASTSteppingInterpreter=="undefined"?nil:ASTSteppingInterpreter)}
  307. return smalltalk.withContext(function($ctx1) {
  308. var $1;
  309. $1=$ASTSteppingInterpreter();
  310. return $1;
  311. }, function($ctx1) {$ctx1.fill(self,"defaultInterpreterClass",{},smalltalk.ASTDebugger)})},
  312. messageSends: []}),
  313. smalltalk.ASTDebugger);
  314. smalltalk.addMethod(
  315. smalltalk.method({
  316. selector: "initializeInterpreter",
  317. fn: function (){
  318. var self=this;
  319. var ast,next;
  320. function $ASTPCNodeVisitor(){return smalltalk.ASTPCNodeVisitor||(typeof ASTPCNodeVisitor=="undefined"?nil:ASTPCNodeVisitor)}
  321. return smalltalk.withContext(function($ctx1) {
  322. var $1,$2;
  323. ast=_st(self)._buildAST();
  324. $1=_st($ASTPCNodeVisitor())._new();
  325. _st($1)._context_(_st(self)._context());
  326. _st($1)._visit_(ast);
  327. $2=_st($1)._currentNode();
  328. next=$2;
  329. _st(_st(self)._interpreter())._interpret_(next);
  330. return self}, function($ctx1) {$ctx1.fill(self,"initializeInterpreter",{ast:ast,next:next},smalltalk.ASTDebugger)})},
  331. messageSends: ["buildAST", "context:", "context", "new", "visit:", "currentNode", "interpret:", "interpreter"]}),
  332. smalltalk.ASTDebugger);
  333. smalltalk.addMethod(
  334. smalltalk.method({
  335. selector: "initializeWithContext:",
  336. fn: function (aContext){
  337. var self=this;
  338. return smalltalk.withContext(function($ctx1) {
  339. _st(self)._context_(aContext);
  340. _st(self)._initializeInterpreter();
  341. return self}, function($ctx1) {$ctx1.fill(self,"initializeWithContext:",{aContext:aContext},smalltalk.ASTDebugger)})},
  342. messageSends: ["context:", "initializeInterpreter"]}),
  343. smalltalk.ASTDebugger);
  344. smalltalk.addMethod(
  345. smalltalk.method({
  346. selector: "interpreter",
  347. fn: function (){
  348. var self=this;
  349. return smalltalk.withContext(function($ctx1) {
  350. var $2,$1;
  351. $2=self["@interpreter"];
  352. if(($receiver = $2) == nil || $receiver == undefined){
  353. self["@interpreter"]=_st(_st(self)._defaultInterpreterClass())._new();
  354. $1=self["@interpreter"];
  355. } else {
  356. $1=$2;
  357. };
  358. return $1;
  359. }, function($ctx1) {$ctx1.fill(self,"interpreter",{},smalltalk.ASTDebugger)})},
  360. messageSends: ["ifNil:", "new", "defaultInterpreterClass"]}),
  361. smalltalk.ASTDebugger);
  362. smalltalk.addMethod(
  363. smalltalk.method({
  364. selector: "interpreter:",
  365. fn: function (anInterpreter){
  366. var self=this;
  367. return smalltalk.withContext(function($ctx1) {
  368. self["@interpreter"]=anInterpreter;
  369. return self}, function($ctx1) {$ctx1.fill(self,"interpreter:",{anInterpreter:anInterpreter},smalltalk.ASTDebugger)})},
  370. messageSends: []}),
  371. smalltalk.ASTDebugger);
  372. smalltalk.addMethod(
  373. smalltalk.method({
  374. selector: "method",
  375. fn: function (){
  376. var self=this;
  377. return smalltalk.withContext(function($ctx1) {
  378. var $1;
  379. $1=_st(_st(self)._context())._method();
  380. return $1;
  381. }, function($ctx1) {$ctx1.fill(self,"method",{},smalltalk.ASTDebugger)})},
  382. messageSends: ["method", "context"]}),
  383. smalltalk.ASTDebugger);
  384. smalltalk.addMethod(
  385. smalltalk.method({
  386. selector: "nextNode",
  387. fn: function (){
  388. var self=this;
  389. return smalltalk.withContext(function($ctx1) {
  390. var $1;
  391. $1=_st(_st(self)._interpreter())._nextNode();
  392. return $1;
  393. }, function($ctx1) {$ctx1.fill(self,"nextNode",{},smalltalk.ASTDebugger)})},
  394. messageSends: ["nextNode", "interpreter"]}),
  395. smalltalk.ASTDebugger);
  396. smalltalk.addMethod(
  397. smalltalk.method({
  398. selector: "proceed",
  399. fn: function (){
  400. var self=this;
  401. return smalltalk.withContext(function($ctx1) {
  402. _st(self)._shouldBeImplemented();
  403. return self}, function($ctx1) {$ctx1.fill(self,"proceed",{},smalltalk.ASTDebugger)})},
  404. messageSends: ["shouldBeImplemented"]}),
  405. smalltalk.ASTDebugger);
  406. smalltalk.addMethod(
  407. smalltalk.method({
  408. selector: "restart",
  409. fn: function (){
  410. var self=this;
  411. return smalltalk.withContext(function($ctx1) {
  412. _st(self)._shouldBeImplemented();
  413. return self}, function($ctx1) {$ctx1.fill(self,"restart",{},smalltalk.ASTDebugger)})},
  414. messageSends: ["shouldBeImplemented"]}),
  415. smalltalk.ASTDebugger);
  416. smalltalk.addMethod(
  417. smalltalk.method({
  418. selector: "step",
  419. fn: function (){
  420. var self=this;
  421. return smalltalk.withContext(function($ctx1) {
  422. _st((function(){
  423. return smalltalk.withContext(function($ctx2) {
  424. return _st(_st(_st(_st(_st(self)._interpreter())._nextNode())._notNil())._and_((function(){
  425. return smalltalk.withContext(function($ctx3) {
  426. return _st(_st(_st(self)._interpreter())._nextNode())._stopOnStepping();
  427. }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})})))._or_((function(){
  428. return smalltalk.withContext(function($ctx3) {
  429. return _st(_st(_st(self)._interpreter())._atEnd())._not();
  430. }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
  431. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}))._whileFalse_((function(){
  432. return smalltalk.withContext(function($ctx2) {
  433. _st(_st(self)._interpreter())._step();
  434. return _st(self)._step();
  435. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
  436. return self}, function($ctx1) {$ctx1.fill(self,"step",{},smalltalk.ASTDebugger)})},
  437. messageSends: ["whileFalse:", "step", "interpreter", "or:", "not", "atEnd", "and:", "stopOnStepping", "nextNode", "notNil"]}),
  438. smalltalk.ASTDebugger);
  439. smalltalk.addMethod(
  440. smalltalk.method({
  441. selector: "stepInto",
  442. fn: function (){
  443. var self=this;
  444. return smalltalk.withContext(function($ctx1) {
  445. _st(self)._shouldBeImplemented();
  446. return self}, function($ctx1) {$ctx1.fill(self,"stepInto",{},smalltalk.ASTDebugger)})},
  447. messageSends: ["shouldBeImplemented"]}),
  448. smalltalk.ASTDebugger);
  449. smalltalk.addMethod(
  450. smalltalk.method({
  451. selector: "stepOver",
  452. fn: function (){
  453. var self=this;
  454. return smalltalk.withContext(function($ctx1) {
  455. _st(self)._step();
  456. return self}, function($ctx1) {$ctx1.fill(self,"stepOver",{},smalltalk.ASTDebugger)})},
  457. messageSends: ["step"]}),
  458. smalltalk.ASTDebugger);
  459. smalltalk.addMethod(
  460. smalltalk.method({
  461. selector: "context:",
  462. fn: function (aContext){
  463. var self=this;
  464. return smalltalk.withContext(function($ctx1) {
  465. var $2,$3,$1;
  466. $2=_st(self)._new();
  467. _st($2)._initializeWithContext_(aContext);
  468. $3=_st($2)._yourself();
  469. $1=$3;
  470. return $1;
  471. }, function($ctx1) {$ctx1.fill(self,"context:",{aContext:aContext},smalltalk.ASTDebugger.klass)})},
  472. messageSends: ["initializeWithContext:", "new", "yourself"]}),
  473. smalltalk.ASTDebugger.klass);
  474. smalltalk.addClass('ASTInterpreter', smalltalk.Object, ['currentNode', 'context', 'shouldReturn', 'result'], 'Compiler-Interpreter');
  475. smalltalk.addMethod(
  476. smalltalk.method({
  477. selector: "assign:to:",
  478. fn: function (aNode,anObject){
  479. var self=this;
  480. return smalltalk.withContext(function($ctx1) {
  481. var $2,$1;
  482. $2=_st(_st(aNode)._binding())._isInstanceVar();
  483. if(smalltalk.assert($2)){
  484. $1=_st(_st(_st(self)._context())._receiver())._instVarAt_put_(_st(aNode)._value(),anObject);
  485. } else {
  486. $1=_st(_st(self)._context())._localAt_put_(_st(aNode)._value(),anObject);
  487. };
  488. return $1;
  489. }, function($ctx1) {$ctx1.fill(self,"assign:to:",{aNode:aNode,anObject:anObject},smalltalk.ASTInterpreter)})},
  490. messageSends: ["ifTrue:ifFalse:", "instVarAt:put:", "value", "receiver", "context", "localAt:put:", "isInstanceVar", "binding"]}),
  491. smalltalk.ASTInterpreter);
  492. smalltalk.addMethod(
  493. smalltalk.method({
  494. selector: "context",
  495. fn: function (){
  496. var self=this;
  497. function $AIContext(){return smalltalk.AIContext||(typeof AIContext=="undefined"?nil:AIContext)}
  498. return smalltalk.withContext(function($ctx1) {
  499. var $2,$1;
  500. $2=self["@context"];
  501. if(($receiver = $2) == nil || $receiver == undefined){
  502. self["@context"]=_st($AIContext())._new();
  503. $1=self["@context"];
  504. } else {
  505. $1=$2;
  506. };
  507. return $1;
  508. }, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.ASTInterpreter)})},
  509. messageSends: ["ifNil:", "new"]}),
  510. smalltalk.ASTInterpreter);
  511. smalltalk.addMethod(
  512. smalltalk.method({
  513. selector: "context:",
  514. fn: function (anAIContext){
  515. var self=this;
  516. return smalltalk.withContext(function($ctx1) {
  517. self["@context"]=anAIContext;
  518. return self}, function($ctx1) {$ctx1.fill(self,"context:",{anAIContext:anAIContext},smalltalk.ASTInterpreter)})},
  519. messageSends: []}),
  520. smalltalk.ASTInterpreter);
  521. smalltalk.addMethod(
  522. smalltalk.method({
  523. selector: "continue:value:",
  524. fn: function (aBlock,anObject){
  525. var self=this;
  526. return smalltalk.withContext(function($ctx1) {
  527. self["@result"]=anObject;
  528. _st(aBlock)._value_(anObject);
  529. return self}, function($ctx1) {$ctx1.fill(self,"continue:value:",{aBlock:aBlock,anObject:anObject},smalltalk.ASTInterpreter)})},
  530. messageSends: ["value:"]}),
  531. smalltalk.ASTInterpreter);
  532. smalltalk.addMethod(
  533. smalltalk.method({
  534. selector: "currentNode",
  535. fn: function (){
  536. var self=this;
  537. return smalltalk.withContext(function($ctx1) {
  538. var $1;
  539. $1=self["@currentNode"];
  540. return $1;
  541. }, function($ctx1) {$ctx1.fill(self,"currentNode",{},smalltalk.ASTInterpreter)})},
  542. messageSends: []}),
  543. smalltalk.ASTInterpreter);
  544. smalltalk.addMethod(
  545. smalltalk.method({
  546. selector: "eval:",
  547. fn: function (aString){
  548. var self=this;
  549. var source,function_;
  550. function $String(){return smalltalk.String||(typeof String=="undefined"?nil:String)}
  551. function $Compiler(){return smalltalk.Compiler||(typeof Compiler=="undefined"?nil:Compiler)}
  552. return smalltalk.withContext(function($ctx1) {
  553. var $1,$2,$3;
  554. source=_st($String())._streamContents_((function(str){
  555. return smalltalk.withContext(function($ctx2) {
  556. _st(str)._nextPutAll_("(function(");
  557. _st(_st(_st(_st(self)._context())._locals())._keys())._do_separatedBy_((function(each){
  558. return smalltalk.withContext(function($ctx3) {
  559. return _st(str)._nextPutAll_(each);
  560. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx1)})}),(function(){
  561. return smalltalk.withContext(function($ctx3) {
  562. return _st(str)._nextPutAll_(",");
  563. }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
  564. $1=str;
  565. _st($1)._nextPutAll_("){ return (function() {");
  566. _st($1)._nextPutAll_(aString);
  567. $2=_st($1)._nextPutAll_("})() })");
  568. return $2;
  569. }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1)})}));
  570. function_=_st(_st($Compiler())._new())._eval_(source);
  571. $3=_st(function_)._valueWithPossibleArguments_(_st(_st(_st(self)._context())._locals())._values());
  572. return $3;
  573. }, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString,source:source,function_:function_},smalltalk.ASTInterpreter)})},
  574. messageSends: ["streamContents:", "nextPutAll:", "do:separatedBy:", "keys", "locals", "context", "eval:", "new", "valueWithPossibleArguments:", "values"]}),
  575. smalltalk.ASTInterpreter);
  576. smalltalk.addMethod(
  577. smalltalk.method({
  578. selector: "initialize",
  579. fn: function (){
  580. var self=this;
  581. return smalltalk.withContext(function($ctx1) {
  582. smalltalk.Object.fn.prototype._initialize.apply(_st(self), []);
  583. self["@shouldReturn"]=false;
  584. return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ASTInterpreter)})},
  585. messageSends: ["initialize"]}),
  586. smalltalk.ASTInterpreter);
  587. smalltalk.addMethod(
  588. smalltalk.method({
  589. selector: "interpret:",
  590. fn: function (aNode){
  591. var self=this;
  592. return smalltalk.withContext(function($ctx1) {
  593. self["@shouldReturn"]=false;
  594. _st(self)._interpret_continue_(aNode,(function(value){
  595. return smalltalk.withContext(function($ctx2) {
  596. self["@result"]=value;
  597. return self["@result"];
  598. }, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1)})}));
  599. return self}, function($ctx1) {$ctx1.fill(self,"interpret:",{aNode:aNode},smalltalk.ASTInterpreter)})},
  600. messageSends: ["interpret:continue:"]}),
  601. smalltalk.ASTInterpreter);
  602. smalltalk.addMethod(
  603. smalltalk.method({
  604. selector: "interpret:continue:",
  605. fn: function (aNode,aBlock){
  606. var self=this;
  607. return smalltalk.withContext(function($ctx1) {
  608. var $1,$2,$3;
  609. $1=self["@shouldReturn"];
  610. if(smalltalk.assert($1)){
  611. $2=self;
  612. return $2;
  613. };
  614. $3=_st(aNode)._isNode();
  615. if(smalltalk.assert($3)){
  616. self["@currentNode"]=aNode;
  617. self["@currentNode"];
  618. _st(self)._interpretNode_continue_(aNode,(function(value){
  619. return smalltalk.withContext(function($ctx2) {
  620. return _st(self)._continue_value_(aBlock,value);
  621. }, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1)})}));
  622. } else {
  623. _st(self)._continue_value_(aBlock,aNode);
  624. };
  625. return self}, function($ctx1) {$ctx1.fill(self,"interpret:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  626. messageSends: ["ifTrue:", "ifTrue:ifFalse:", "interpretNode:continue:", "continue:value:", "isNode"]}),
  627. smalltalk.ASTInterpreter);
  628. smalltalk.addMethod(
  629. smalltalk.method({
  630. selector: "interpretAll:continue:",
  631. fn: function (aCollection,aBlock){
  632. var self=this;
  633. function $OrderedCollection(){return smalltalk.OrderedCollection||(typeof OrderedCollection=="undefined"?nil:OrderedCollection)}
  634. return smalltalk.withContext(function($ctx1) {
  635. _st(self)._interpretAll_continue_result_(aCollection,aBlock,_st($OrderedCollection())._new());
  636. return self}, function($ctx1) {$ctx1.fill(self,"interpretAll:continue:",{aCollection:aCollection,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  637. messageSends: ["interpretAll:continue:result:", "new"]}),
  638. smalltalk.ASTInterpreter);
  639. smalltalk.addMethod(
  640. smalltalk.method({
  641. selector: "interpretAll:continue:result:",
  642. fn: function (nodes,aBlock,aCollection){
  643. var self=this;
  644. return smalltalk.withContext(function($ctx1) {
  645. var $1;
  646. $1=_st(nodes)._isEmpty();
  647. if(smalltalk.assert($1)){
  648. _st(self)._continue_value_(aBlock,aCollection);
  649. } else {
  650. _st(self)._interpret_continue_(_st(nodes)._first(),(function(value){
  651. return smalltalk.withContext(function($ctx2) {
  652. return _st(self)._interpretAll_continue_result_(_st(nodes)._allButFirst(),aBlock,_st(aCollection).__comma([value]));
  653. }, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1)})}));
  654. };
  655. return self}, function($ctx1) {$ctx1.fill(self,"interpretAll:continue:result:",{nodes:nodes,aBlock:aBlock,aCollection:aCollection},smalltalk.ASTInterpreter)})},
  656. messageSends: ["ifTrue:ifFalse:", "continue:value:", "interpret:continue:", "first", "interpretAll:continue:result:", "allButFirst", ",", "isEmpty"]}),
  657. smalltalk.ASTInterpreter);
  658. smalltalk.addMethod(
  659. smalltalk.method({
  660. selector: "interpretAssignmentNode:continue:",
  661. fn: function (aNode,aBlock){
  662. var self=this;
  663. return smalltalk.withContext(function($ctx1) {
  664. _st(self)._interpret_continue_(_st(aNode)._right(),(function(value){
  665. return smalltalk.withContext(function($ctx2) {
  666. return _st(self)._continue_value_(aBlock,_st(self)._assign_to_(_st(aNode)._left(),value));
  667. }, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1)})}));
  668. return self}, function($ctx1) {$ctx1.fill(self,"interpretAssignmentNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  669. messageSends: ["interpret:continue:", "right", "continue:value:", "assign:to:", "left"]}),
  670. smalltalk.ASTInterpreter);
  671. smalltalk.addMethod(
  672. smalltalk.method({
  673. selector: "interpretBlockNode:continue:",
  674. fn: function (aNode,aBlock){
  675. var self=this;
  676. return smalltalk.withContext(function($ctx1) {
  677. var $1,$2;
  678. _st(self)._continue_value_(aBlock,(function(){
  679. return smalltalk.withContext(function($ctx2) {
  680. return _st(self)._withBlockContext_((function(){
  681. return smalltalk.withContext(function($ctx3) {
  682. $1=self;
  683. _st($1)._interpret_(_st(_st(aNode)._nodes())._first());
  684. $2=_st($1)._result();
  685. return $2;
  686. }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
  687. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
  688. return self}, function($ctx1) {$ctx1.fill(self,"interpretBlockNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  689. messageSends: ["continue:value:", "withBlockContext:", "interpret:", "first", "nodes", "result"]}),
  690. smalltalk.ASTInterpreter);
  691. smalltalk.addMethod(
  692. smalltalk.method({
  693. selector: "interpretBlockSequenceNode:continue:",
  694. fn: function (aNode,aBlock){
  695. var self=this;
  696. return smalltalk.withContext(function($ctx1) {
  697. _st(self)._interpretSequenceNode_continue_(aNode,aBlock);
  698. return self}, function($ctx1) {$ctx1.fill(self,"interpretBlockSequenceNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  699. messageSends: ["interpretSequenceNode:continue:"]}),
  700. smalltalk.ASTInterpreter);
  701. smalltalk.addMethod(
  702. smalltalk.method({
  703. selector: "interpretCascadeNode:continue:",
  704. fn: function (aNode,aBlock){
  705. var self=this;
  706. return smalltalk.withContext(function($ctx1) {
  707. _st(self)._interpret_continue_(_st(aNode)._receiver(),(function(receiver){
  708. return smalltalk.withContext(function($ctx2) {
  709. _st(_st(aNode)._nodes())._do_((function(each){
  710. return smalltalk.withContext(function($ctx3) {
  711. return _st(each)._receiver_(receiver);
  712. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx1)})}));
  713. return _st(self)._interpretAll_continue_(_st(_st(aNode)._nodes())._allButLast(),(function(){
  714. return smalltalk.withContext(function($ctx3) {
  715. return _st(self)._interpret_continue_(_st(_st(aNode)._nodes())._last(),(function(val){
  716. return smalltalk.withContext(function($ctx4) {
  717. return _st(self)._continue_value_(aBlock,val);
  718. }, function($ctx4) {$ctx4.fillBlock({val:val},$ctx1)})}));
  719. }, function($ctx3) {$ctx3.fillBlock({},$ctx1)})}));
  720. }, function($ctx2) {$ctx2.fillBlock({receiver:receiver},$ctx1)})}));
  721. return self}, function($ctx1) {$ctx1.fill(self,"interpretCascadeNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  722. messageSends: ["interpret:continue:", "receiver", "do:", "receiver:", "nodes", "interpretAll:continue:", "allButLast", "last", "continue:value:"]}),
  723. smalltalk.ASTInterpreter);
  724. smalltalk.addMethod(
  725. smalltalk.method({
  726. selector: "interpretClassReferenceNode:continue:",
  727. fn: function (aNode,aBlock){
  728. var self=this;
  729. function $Smalltalk(){return smalltalk.Smalltalk||(typeof Smalltalk=="undefined"?nil:Smalltalk)}
  730. return smalltalk.withContext(function($ctx1) {
  731. _st(self)._continue_value_(aBlock,_st(_st($Smalltalk())._current())._at_(_st(aNode)._value()));
  732. return self}, function($ctx1) {$ctx1.fill(self,"interpretClassReferenceNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  733. messageSends: ["continue:value:", "at:", "value", "current"]}),
  734. smalltalk.ASTInterpreter);
  735. smalltalk.addMethod(
  736. smalltalk.method({
  737. selector: "interpretDynamicArrayNode:continue:",
  738. fn: function (aNode,aBlock){
  739. var self=this;
  740. return smalltalk.withContext(function($ctx1) {
  741. _st(self)._interpretAll_continue_(_st(aNode)._nodes(),(function(array){
  742. return smalltalk.withContext(function($ctx2) {
  743. return _st(self)._continue_value_(aBlock,array);
  744. }, function($ctx2) {$ctx2.fillBlock({array:array},$ctx1)})}));
  745. return self}, function($ctx1) {$ctx1.fill(self,"interpretDynamicArrayNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  746. messageSends: ["interpretAll:continue:", "nodes", "continue:value:"]}),
  747. smalltalk.ASTInterpreter);
  748. smalltalk.addMethod(
  749. smalltalk.method({
  750. selector: "interpretDynamicDictionaryNode:continue:",
  751. fn: function (aNode,aBlock){
  752. var self=this;
  753. function $HashedCollection(){return smalltalk.HashedCollection||(typeof HashedCollection=="undefined"?nil:HashedCollection)}
  754. return smalltalk.withContext(function($ctx1) {
  755. _st(self)._interpretAll_continue_(_st(aNode)._nodes(),(function(array){
  756. var hashedCollection;
  757. return smalltalk.withContext(function($ctx2) {
  758. hashedCollection=_st($HashedCollection())._new();
  759. hashedCollection;
  760. _st(array)._do_((function(each){
  761. return smalltalk.withContext(function($ctx3) {
  762. return _st(hashedCollection)._add_(each);
  763. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx1)})}));
  764. return _st(self)._continue_value_(aBlock,hashedCollection);
  765. }, function($ctx2) {$ctx2.fillBlock({array:array,hashedCollection:hashedCollection},$ctx1)})}));
  766. return self}, function($ctx1) {$ctx1.fill(self,"interpretDynamicDictionaryNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  767. messageSends: ["interpretAll:continue:", "nodes", "new", "do:", "add:", "continue:value:"]}),
  768. smalltalk.ASTInterpreter);
  769. smalltalk.addMethod(
  770. smalltalk.method({
  771. selector: "interpretJSStatementNode:continue:",
  772. fn: function (aNode,aBlock){
  773. var self=this;
  774. return smalltalk.withContext(function($ctx1) {
  775. self["@shouldReturn"]=true;
  776. _st(self)._continue_value_(aBlock,_st(self)._eval_(_st(aNode)._source()));
  777. return self}, function($ctx1) {$ctx1.fill(self,"interpretJSStatementNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  778. messageSends: ["continue:value:", "eval:", "source"]}),
  779. smalltalk.ASTInterpreter);
  780. smalltalk.addMethod(
  781. smalltalk.method({
  782. selector: "interpretMethodNode:continue:",
  783. fn: function (aNode,aBlock){
  784. var self=this;
  785. return smalltalk.withContext(function($ctx1) {
  786. _st(self)._interpretAll_continue_(_st(aNode)._nodes(),(function(array){
  787. return smalltalk.withContext(function($ctx2) {
  788. return _st(self)._continue_value_(aBlock,_st(array)._first());
  789. }, function($ctx2) {$ctx2.fillBlock({array:array},$ctx1)})}));
  790. return self}, function($ctx1) {$ctx1.fill(self,"interpretMethodNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  791. messageSends: ["interpretAll:continue:", "nodes", "continue:value:", "first"]}),
  792. smalltalk.ASTInterpreter);
  793. smalltalk.addMethod(
  794. smalltalk.method({
  795. selector: "interpretNode:continue:",
  796. fn: function (aNode,aBlock){
  797. var self=this;
  798. return smalltalk.withContext(function($ctx1) {
  799. _st(aNode)._interpreter_continue_(self,aBlock);
  800. return self}, function($ctx1) {$ctx1.fill(self,"interpretNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  801. messageSends: ["interpreter:continue:"]}),
  802. smalltalk.ASTInterpreter);
  803. smalltalk.addMethod(
  804. smalltalk.method({
  805. selector: "interpretReturnNode:continue:",
  806. fn: function (aNode,aBlock){
  807. var self=this;
  808. return smalltalk.withContext(function($ctx1) {
  809. _st(self)._interpret_continue_(_st(_st(aNode)._nodes())._first(),(function(value){
  810. return smalltalk.withContext(function($ctx2) {
  811. self["@shouldReturn"]=true;
  812. self["@shouldReturn"];
  813. return _st(self)._continue_value_(aBlock,value);
  814. }, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1)})}));
  815. return self}, function($ctx1) {$ctx1.fill(self,"interpretReturnNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  816. messageSends: ["interpret:continue:", "first", "nodes", "continue:value:"]}),
  817. smalltalk.ASTInterpreter);
  818. smalltalk.addMethod(
  819. smalltalk.method({
  820. selector: "interpretSendNode:continue:",
  821. fn: function (aNode,aBlock){
  822. var self=this;
  823. return smalltalk.withContext(function($ctx1) {
  824. _st(self)._interpret_continue_(_st(aNode)._receiver(),(function(receiver){
  825. return smalltalk.withContext(function($ctx2) {
  826. return _st(self)._interpretAll_continue_(_st(aNode)._arguments(),(function(args){
  827. return smalltalk.withContext(function($ctx3) {
  828. return _st(self)._messageFromSendNode_arguments_do_(aNode,args,(function(message){
  829. return smalltalk.withContext(function($ctx4) {
  830. _st(_st(self)._context())._pc_(_st(_st(_st(self)._context())._pc()).__plus((1)));
  831. return _st(self)._continue_value_(aBlock,_st(self)._sendMessage_to_superSend_(message,receiver,_st(aNode)._superSend()));
  832. }, function($ctx4) {$ctx4.fillBlock({message:message},$ctx1)})}));
  833. }, function($ctx3) {$ctx3.fillBlock({args:args},$ctx1)})}));
  834. }, function($ctx2) {$ctx2.fillBlock({receiver:receiver},$ctx1)})}));
  835. return self}, function($ctx1) {$ctx1.fill(self,"interpretSendNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  836. messageSends: ["interpret:continue:", "receiver", "interpretAll:continue:", "arguments", "messageFromSendNode:arguments:do:", "pc:", "+", "pc", "context", "continue:value:", "sendMessage:to:superSend:", "superSend"]}),
  837. smalltalk.ASTInterpreter);
  838. smalltalk.addMethod(
  839. smalltalk.method({
  840. selector: "interpretSequenceNode:continue:",
  841. fn: function (aNode,aBlock){
  842. var self=this;
  843. return smalltalk.withContext(function($ctx1) {
  844. _st(self)._interpretAll_continue_(_st(aNode)._nodes(),(function(array){
  845. return smalltalk.withContext(function($ctx2) {
  846. return _st(self)._continue_value_(aBlock,_st(array)._last());
  847. }, function($ctx2) {$ctx2.fillBlock({array:array},$ctx1)})}));
  848. return self}, function($ctx1) {$ctx1.fill(self,"interpretSequenceNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  849. messageSends: ["interpretAll:continue:", "nodes", "continue:value:", "last"]}),
  850. smalltalk.ASTInterpreter);
  851. smalltalk.addMethod(
  852. smalltalk.method({
  853. selector: "interpretValueNode:continue:",
  854. fn: function (aNode,aBlock){
  855. var self=this;
  856. return smalltalk.withContext(function($ctx1) {
  857. _st(self)._continue_value_(aBlock,_st(aNode)._value());
  858. return self}, function($ctx1) {$ctx1.fill(self,"interpretValueNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  859. messageSends: ["continue:value:", "value"]}),
  860. smalltalk.ASTInterpreter);
  861. smalltalk.addMethod(
  862. smalltalk.method({
  863. selector: "interpretVariableNode:continue:",
  864. fn: function (aNode,aBlock){
  865. var self=this;
  866. return smalltalk.withContext(function($ctx1) {
  867. var $1,$2,$4,$3;
  868. $1=self;
  869. $2=aBlock;
  870. $4=_st(_st(aNode)._binding())._isInstanceVar();
  871. if(smalltalk.assert($4)){
  872. $3=_st(_st(_st(self)._context())._receiver())._instVarAt_(_st(aNode)._value());
  873. } else {
  874. $3=_st(_st(self)._context())._localAt_(_st(aNode)._value());
  875. };
  876. _st($1)._continue_value_($2,$3);
  877. return self}, function($ctx1) {$ctx1.fill(self,"interpretVariableNode:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  878. messageSends: ["continue:value:", "ifTrue:ifFalse:", "instVarAt:", "value", "receiver", "context", "localAt:", "isInstanceVar", "binding"]}),
  879. smalltalk.ASTInterpreter);
  880. smalltalk.addMethod(
  881. smalltalk.method({
  882. selector: "messageFromSendNode:arguments:do:",
  883. fn: function (aSendNode,aCollection,aBlock){
  884. var self=this;
  885. function $Message(){return smalltalk.Message||(typeof Message=="undefined"?nil:Message)}
  886. return smalltalk.withContext(function($ctx1) {
  887. var $1,$2;
  888. $1=_st($Message())._new();
  889. _st($1)._selector_(_st(aSendNode)._selector());
  890. _st($1)._arguments_(aCollection);
  891. $2=_st($1)._yourself();
  892. _st(self)._continue_value_(aBlock,$2);
  893. return self}, function($ctx1) {$ctx1.fill(self,"messageFromSendNode:arguments:do:",{aSendNode:aSendNode,aCollection:aCollection,aBlock:aBlock},smalltalk.ASTInterpreter)})},
  894. messageSends: ["continue:value:", "selector:", "selector", "new", "arguments:", "yourself"]}),
  895. smalltalk.ASTInterpreter);
  896. smalltalk.addMethod(
  897. smalltalk.method({
  898. selector: "result",
  899. fn: function (){
  900. var self=this;
  901. return smalltalk.withContext(function($ctx1) {
  902. var $1;
  903. $1=self["@result"];
  904. return $1;
  905. }, function($ctx1) {$ctx1.fill(self,"result",{},smalltalk.ASTInterpreter)})},
  906. messageSends: []}),
  907. smalltalk.ASTInterpreter);
  908. smalltalk.addMethod(
  909. smalltalk.method({
  910. selector: "sendMessage:to:superSend:",
  911. fn: function (aMessage,anObject,aBoolean){
  912. var self=this;
  913. var method;
  914. return smalltalk.withContext(function($ctx1) {
  915. var $1,$2,$3,$4,$5,$6;
  916. var $early={};
  917. try {
  918. $1=aBoolean;
  919. if(! smalltalk.assert($1)){
  920. $2=_st(aMessage)._sendTo_(anObject);
  921. return $2;
  922. };
  923. $3=_st(_st(anObject)._class())._superclass();
  924. if(($receiver = $3) == nil || $receiver == undefined){
  925. $4=_st(self)._messageNotUnderstood_receiver_(aMessage,anObject);
  926. return $4;
  927. } else {
  928. $3;
  929. };
  930. method=_st(_st(_st(_st(anObject)._class())._superclass())._methodDictionary())._at_ifAbsent_(_st(aMessage)._selector(),(function(){
  931. return smalltalk.withContext(function($ctx2) {
  932. $5=_st(self)._messageNotUnderstood_receiver_(aMessage,anObject);
  933. throw $early=[$5];
  934. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
  935. $6=_st(_st(method)._fn())._applyTo_arguments_(anObject,_st(aMessage)._arguments());
  936. return $6;
  937. }
  938. catch(e) {if(e===$early)return e[0]; throw e}
  939. }, function($ctx1) {$ctx1.fill(self,"sendMessage:to:superSend:",{aMessage:aMessage,anObject:anObject,aBoolean:aBoolean,method:method},smalltalk.ASTInterpreter)})},
  940. messageSends: ["ifFalse:", "sendTo:", "ifNil:", "messageNotUnderstood:receiver:", "superclass", "class", "at:ifAbsent:", "selector", "methodDictionary", "applyTo:arguments:", "arguments", "fn"]}),
  941. smalltalk.ASTInterpreter);
  942. smalltalk.addMethod(
  943. smalltalk.method({
  944. selector: "shouldReturn",
  945. fn: function (){
  946. var self=this;
  947. return smalltalk.withContext(function($ctx1) {
  948. var $2,$1;
  949. $2=self["@shouldReturn"];
  950. if(($receiver = $2) == nil || $receiver == undefined){
  951. $1=false;
  952. } else {
  953. $1=$2;
  954. };
  955. return $1;
  956. }, function($ctx1) {$ctx1.fill(self,"shouldReturn",{},smalltalk.ASTInterpreter)})},
  957. messageSends: ["ifNil:"]}),
  958. smalltalk.ASTInterpreter);
  959. smalltalk.addMethod(
  960. smalltalk.method({
  961. selector: "withBlockContext:",
  962. fn: function (aBlock){
  963. var self=this;
  964. var blockResult;
  965. function $AIContext(){return smalltalk.AIContext||(typeof AIContext=="undefined"?nil:AIContext)}
  966. return smalltalk.withContext(function($ctx1) {
  967. var $1,$2,$3;
  968. $1=_st($AIContext())._new();
  969. _st($1)._outerContext_(_st(self)._context());
  970. $2=_st($1)._yourself();
  971. _st(self)._context_($2);
  972. blockResult=_st(aBlock)._value();
  973. _st(self)._context_(_st(_st(self)._context())._outerContext());
  974. $3=blockResult;
  975. return $3;
  976. }, function($ctx1) {$ctx1.fill(self,"withBlockContext:",{aBlock:aBlock,blockResult:blockResult},smalltalk.ASTInterpreter)})},
  977. messageSends: ["context:", "outerContext:", "context", "new", "yourself", "value", "outerContext"]}),
  978. smalltalk.ASTInterpreter);
  979. smalltalk.addClass('ASTSteppingInterpreter', smalltalk.ASTInterpreter, ['continuation', 'nextNode'], 'Compiler-Interpreter');
  980. smalltalk.addMethod(
  981. smalltalk.method({
  982. selector: "atEnd",
  983. fn: function (){
  984. var self=this;
  985. return smalltalk.withContext(function($ctx1) {
  986. var $1;
  987. $1=_st(_st(self)._shouldReturn())._or_((function(){
  988. return smalltalk.withContext(function($ctx2) {
  989. return _st(_st(self)._nextNode()).__eq_eq(_st(self)._currentNode());
  990. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
  991. return $1;
  992. }, function($ctx1) {$ctx1.fill(self,"atEnd",{},smalltalk.ASTSteppingInterpreter)})},
  993. messageSends: ["or:", "==", "currentNode", "nextNode", "shouldReturn"]}),
  994. smalltalk.ASTSteppingInterpreter);
  995. smalltalk.addMethod(
  996. smalltalk.method({
  997. selector: "initialize",
  998. fn: function (){
  999. var self=this;
  1000. return smalltalk.withContext(function($ctx1) {
  1001. smalltalk.ASTInterpreter.fn.prototype._initialize.apply(_st(self), []);
  1002. self["@continuation"]=(function(){
  1003. return smalltalk.withContext(function($ctx2) {
  1004. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})});
  1005. return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.ASTSteppingInterpreter)})},
  1006. messageSends: ["initialize"]}),
  1007. smalltalk.ASTSteppingInterpreter);
  1008. smalltalk.addMethod(
  1009. smalltalk.method({
  1010. selector: "interpret:continue:",
  1011. fn: function (aNode,aBlock){
  1012. var self=this;
  1013. return smalltalk.withContext(function($ctx1) {
  1014. self["@nextNode"]=aNode;
  1015. self["@continuation"]=(function(){
  1016. return smalltalk.withContext(function($ctx2) {
  1017. return smalltalk.ASTInterpreter.fn.prototype._interpret_continue_.apply(_st(self), [aNode,aBlock]);
  1018. }, function($ctx2) {$ctx2.fillBlock({},$ctx1)})});
  1019. return self}, function($ctx1) {$ctx1.fill(self,"interpret:continue:",{aNode:aNode,aBlock:aBlock},smalltalk.ASTSteppingInterpreter)})},
  1020. messageSends: ["interpret:continue:"]}),
  1021. smalltalk.ASTSteppingInterpreter);
  1022. smalltalk.addMethod(
  1023. smalltalk.method({
  1024. selector: "nextNode",
  1025. fn: function (){
  1026. var self=this;
  1027. return smalltalk.withContext(function($ctx1) {
  1028. var $1;
  1029. $1=self["@nextNode"];
  1030. return $1;
  1031. }, function($ctx1) {$ctx1.fill(self,"nextNode",{},smalltalk.ASTSteppingInterpreter)})},
  1032. messageSends: []}),
  1033. smalltalk.ASTSteppingInterpreter);
  1034. smalltalk.addMethod(
  1035. smalltalk.method({
  1036. selector: "step",
  1037. fn: function (){
  1038. var self=this;
  1039. return smalltalk.withContext(function($ctx1) {
  1040. _st(self["@continuation"])._value();
  1041. return self}, function($ctx1) {$ctx1.fill(self,"step",{},smalltalk.ASTSteppingInterpreter)})},
  1042. messageSends: ["value"]}),
  1043. smalltalk.ASTSteppingInterpreter);
  1044. smalltalk.addClass('ASTPCNodeVisitor', smalltalk.NodeVisitor, ['useInlinings', 'pc', 'context', 'currentNode'], 'Compiler-Interpreter');
  1045. smalltalk.addMethod(
  1046. smalltalk.method({
  1047. selector: "context",
  1048. fn: function (){
  1049. var self=this;
  1050. return smalltalk.withContext(function($ctx1) {
  1051. var $1;
  1052. $1=self["@context"];
  1053. return $1;
  1054. }, function($ctx1) {$ctx1.fill(self,"context",{},smalltalk.ASTPCNodeVisitor)})},
  1055. messageSends: []}),
  1056. smalltalk.ASTPCNodeVisitor);
  1057. smalltalk.addMethod(
  1058. smalltalk.method({
  1059. selector: "context:",
  1060. fn: function (aContext){
  1061. var self=this;
  1062. return smalltalk.withContext(function($ctx1) {
  1063. self["@context"]=aContext;
  1064. return self}, function($ctx1) {$ctx1.fill(self,"context:",{aContext:aContext},smalltalk.ASTPCNodeVisitor)})},
  1065. messageSends: []}),
  1066. smalltalk.ASTPCNodeVisitor);
  1067. smalltalk.addMethod(
  1068. smalltalk.method({
  1069. selector: "currentNode",
  1070. fn: function (){
  1071. var self=this;
  1072. return smalltalk.withContext(function($ctx1) {
  1073. var $1;
  1074. $1=self["@currentNode"];
  1075. return $1;
  1076. }, function($ctx1) {$ctx1.fill(self,"currentNode",{},smalltalk.ASTPCNodeVisitor)})},
  1077. messageSends: []}),
  1078. smalltalk.ASTPCNodeVisitor);
  1079. smalltalk.addMethod(
  1080. smalltalk.method({
  1081. selector: "pc",
  1082. fn: function (){
  1083. var self=this;
  1084. return smalltalk.withContext(function($ctx1) {
  1085. var $2,$1;
  1086. $2=self["@pc"];
  1087. if(($receiver = $2) == nil || $receiver == undefined){
  1088. $1=(0);
  1089. } else {
  1090. $1=$2;
  1091. };
  1092. return $1;
  1093. }, function($ctx1) {$ctx1.fill(self,"pc",{},smalltalk.ASTPCNodeGetter)})},
  1094. messageSends: ["ifNil:"]}),
  1095. smalltalk.ASTPCNodeVisitor);
  1096. smalltalk.addMethod(
  1097. smalltalk.method({
  1098. selector: "pc:",
  1099. fn: function (anInteger){
  1100. var self=this;
  1101. return smalltalk.withContext(function($ctx1) {
  1102. self["@pc"]=anInteger;
  1103. return self}, function($ctx1) {$ctx1.fill(self,"pc:",{anInteger:anInteger},smalltalk.ASTPCNodeGetter)})},
  1104. messageSends: []}),
  1105. smalltalk.ASTPCNodeVisitor);
  1106. smalltalk.addMethod(
  1107. smalltalk.method({
  1108. selector: "useInlinings",
  1109. fn: function (){
  1110. var self=this;
  1111. return smalltalk.withContext(function($ctx1) {
  1112. var $2,$1;
  1113. $2=self["@useInlinings"];
  1114. if(($receiver = $2) == nil || $receiver == undefined){
  1115. $1=true;
  1116. } else {
  1117. $1=$2;
  1118. };
  1119. return $1;
  1120. }, function($ctx1) {$ctx1.fill(self,"useInlinings",{},smalltalk.ASTPCNodeGetter)})},
  1121. messageSends: ["ifNil:"]}),
  1122. smalltalk.ASTPCNodeVisitor);
  1123. smalltalk.addMethod(
  1124. smalltalk.method({
  1125. selector: "useInlinings:",
  1126. fn: function (aBoolean){
  1127. var self=this;
  1128. return smalltalk.withContext(function($ctx1) {
  1129. self["@useInlinings"]=aBoolean;
  1130. return self}, function($ctx1) {$ctx1.fill(self,"useInlinings:",{aBoolean:aBoolean},smalltalk.ASTPCNodeGetter)})},
  1131. messageSends: []}),
  1132. smalltalk.ASTPCNodeVisitor);
  1133. smalltalk.addMethod(
  1134. smalltalk.method({
  1135. selector: "visitJSStatementNode:",
  1136. fn: function (aNode){
  1137. var self=this;
  1138. return smalltalk.withContext(function($ctx1) {
  1139. self["@currentNode"]=aNode;
  1140. return self}, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode},smalltalk.ASTPCNodeVisitor)})},
  1141. messageSends: []}),
  1142. smalltalk.ASTPCNodeVisitor);
  1143. smalltalk.addMethod(
  1144. smalltalk.method({
  1145. selector: "visitSendNode:",
  1146. fn: function (aNode){
  1147. var self=this;
  1148. return smalltalk.withContext(function($ctx1) {
  1149. var $1,$2;
  1150. smalltalk.NodeVisitor.fn.prototype._visitSendNode_.apply(_st(self), [aNode]);
  1151. $1=_st(_st(self)._pc()).__eq(_st(_st(self)._context())._pc());
  1152. if(! smalltalk.assert($1)){
  1153. $2=_st(aNode)._shouldBeInlined();
  1154. if(! smalltalk.assert($2)){
  1155. _st(self)._pc_(_st(_st(self)._pc()).__plus((1)));
  1156. self["@currentNode"]=aNode;
  1157. self["@currentNode"];
  1158. };
  1159. };
  1160. return self}, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode},smalltalk.ASTPCNodeVisitor)})},
  1161. messageSends: ["visitSendNode:", "ifFalse:", "pc:", "+", "pc", "shouldBeInlined", "=", "context"]}),
  1162. smalltalk.ASTPCNodeVisitor);
  1163. smalltalk.addMethod(
  1164. smalltalk.method({
  1165. selector: "interpreter:continue:",
  1166. fn: function (anInterpreter,aBlock){
  1167. var self=this;
  1168. return smalltalk.withContext(function($ctx1) {
  1169. var $1;
  1170. $1=_st(anInterpreter)._interpretNode_continue_(self,aBlock);
  1171. return $1;
  1172. }, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.Node)})},
  1173. messageSends: ["interpretNode:continue:"]}),
  1174. smalltalk.Node);
  1175. smalltalk.addMethod(
  1176. smalltalk.method({
  1177. selector: "isSteppingNode",
  1178. fn: function (){
  1179. var self=this;
  1180. return smalltalk.withContext(function($ctx1) {
  1181. return false;
  1182. }, function($ctx1) {$ctx1.fill(self,"isSteppingNode",{},smalltalk.Node)})},
  1183. messageSends: []}),
  1184. smalltalk.Node);
  1185. smalltalk.addMethod(
  1186. smalltalk.method({
  1187. selector: "interpreter:continue:",
  1188. fn: function (anInterpreter,aBlock){
  1189. var self=this;
  1190. return smalltalk.withContext(function($ctx1) {
  1191. var $1;
  1192. $1=_st(anInterpreter)._interpretAssignmentNode_continue_(self,aBlock);
  1193. return $1;
  1194. }, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.AssignmentNode)})},
  1195. messageSends: ["interpretAssignmentNode:continue:"]}),
  1196. smalltalk.AssignmentNode);
  1197. smalltalk.addMethod(
  1198. smalltalk.method({
  1199. selector: "isSteppingNode",
  1200. fn: function (){
  1201. var self=this;
  1202. return smalltalk.withContext(function($ctx1) {
  1203. return true;
  1204. }, function($ctx1) {$ctx1.fill(self,"isSteppingNode",{},smalltalk.AssignmentNode)})},
  1205. messageSends: []}),
  1206. smalltalk.AssignmentNode);
  1207. smalltalk.addMethod(
  1208. smalltalk.method({
  1209. selector: "interpreter:continue:",
  1210. fn: function (anInterpreter,aBlock){
  1211. var self=this;
  1212. return smalltalk.withContext(function($ctx1) {
  1213. var $1;
  1214. $1=_st(anInterpreter)._interpretBlockNode_continue_(self,aBlock);
  1215. return $1;
  1216. }, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.BlockNode)})},
  1217. messageSends: ["interpretBlockNode:continue:"]}),
  1218. smalltalk.BlockNode);
  1219. smalltalk.addMethod(
  1220. smalltalk.method({
  1221. selector: "isSteppingNode",
  1222. fn: function (){
  1223. var self=this;
  1224. return smalltalk.withContext(function($ctx1) {
  1225. return true;
  1226. }, function($ctx1) {$ctx1.fill(self,"isSteppingNode",{},smalltalk.BlockNode)})},
  1227. messageSends: []}),
  1228. smalltalk.BlockNode);
  1229. smalltalk.addMethod(
  1230. smalltalk.method({
  1231. selector: "interpreter:continue:",
  1232. fn: function (anInterpreter,aBlock){
  1233. var self=this;
  1234. return smalltalk.withContext(function($ctx1) {
  1235. var $1;
  1236. $1=_st(anInterpreter)._interpretCascadeNode_continue_(self,aBlock);
  1237. return $1;
  1238. }, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.CascadeNode)})},
  1239. messageSends: ["interpretCascadeNode:continue:"]}),
  1240. smalltalk.CascadeNode);
  1241. smalltalk.addMethod(
  1242. smalltalk.method({
  1243. selector: "interpreter:continue:",
  1244. fn: function (anInterpreter,aBlock){
  1245. var self=this;
  1246. return smalltalk.withContext(function($ctx1) {
  1247. var $1;
  1248. $1=_st(anInterpreter)._interpretDynamicArrayNode_continue_(self,aBlock);
  1249. return $1;
  1250. }, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.DynamicArrayNode)})},
  1251. messageSends: ["interpretDynamicArrayNode:continue:"]}),
  1252. smalltalk.DynamicArrayNode);
  1253. smalltalk.addMethod(
  1254. smalltalk.method({
  1255. selector: "isSteppingNode",
  1256. fn: function (){
  1257. var self=this;
  1258. return smalltalk.withContext(function($ctx1) {
  1259. return true;
  1260. }, function($ctx1) {$ctx1.fill(self,"isSteppingNode",{},smalltalk.DynamicArrayNode)})},
  1261. messageSends: []}),
  1262. smalltalk.DynamicArrayNode);
  1263. smalltalk.addMethod(
  1264. smalltalk.method({
  1265. selector: "interpreter:continue:",
  1266. fn: function (anInterpreter,aBlock){
  1267. var self=this;
  1268. return smalltalk.withContext(function($ctx1) {
  1269. var $1;
  1270. $1=_st(anInterpreter)._interpretDynamicDictionaryNode_continue_(self,aBlock);
  1271. return $1;
  1272. }, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.DynamicDictionaryNode)})},
  1273. messageSends: ["interpretDynamicDictionaryNode:continue:"]}),
  1274. smalltalk.DynamicDictionaryNode);
  1275. smalltalk.addMethod(
  1276. smalltalk.method({
  1277. selector: "isSteppingNode",
  1278. fn: function (){
  1279. var self=this;
  1280. return smalltalk.withContext(function($ctx1) {
  1281. return true;
  1282. }, function($ctx1) {$ctx1.fill(self,"isSteppingNode",{},smalltalk.DynamicDictionaryNode)})},
  1283. messageSends: []}),
  1284. smalltalk.DynamicDictionaryNode);
  1285. smalltalk.addMethod(
  1286. smalltalk.method({
  1287. selector: "interpreter:continue:",
  1288. fn: function (anInterpreter,aBlock){
  1289. var self=this;
  1290. return smalltalk.withContext(function($ctx1) {
  1291. var $1;
  1292. $1=_st(anInterpreter)._interpretJSStatementNode_continue_(self,aBlock);
  1293. return $1;
  1294. }, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.JSStatementNode)})},
  1295. messageSends: ["interpretJSStatementNode:continue:"]}),
  1296. smalltalk.JSStatementNode);
  1297. smalltalk.addMethod(
  1298. smalltalk.method({
  1299. selector: "isSteppingNode",
  1300. fn: function (){
  1301. var self=this;
  1302. return smalltalk.withContext(function($ctx1) {
  1303. return true;
  1304. }, function($ctx1) {$ctx1.fill(self,"isSteppingNode",{},smalltalk.JSStatementNode)})},
  1305. messageSends: []}),
  1306. smalltalk.JSStatementNode);
  1307. smalltalk.addMethod(
  1308. smalltalk.method({
  1309. selector: "interpreter:continue:",
  1310. fn: function (anInterpreter,aBlock){
  1311. var self=this;
  1312. return smalltalk.withContext(function($ctx1) {
  1313. var $1;
  1314. $1=_st(anInterpreter)._interpretMethodNode_continue_(self,aBlock);
  1315. return $1;
  1316. }, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.MethodNode)})},
  1317. messageSends: ["interpretMethodNode:continue:"]}),
  1318. smalltalk.MethodNode);
  1319. smalltalk.addMethod(
  1320. smalltalk.method({
  1321. selector: "interpreter:continue:",
  1322. fn: function (anInterpreter,aBlock){
  1323. var self=this;
  1324. return smalltalk.withContext(function($ctx1) {
  1325. var $1;
  1326. $1=_st(anInterpreter)._interpretReturnNode_continue_(self,aBlock);
  1327. return $1;
  1328. }, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.ReturnNode)})},
  1329. messageSends: ["interpretReturnNode:continue:"]}),
  1330. smalltalk.ReturnNode);
  1331. smalltalk.addMethod(
  1332. smalltalk.method({
  1333. selector: "interpreter:continue:",
  1334. fn: function (anInterpreter,aBlock){
  1335. var self=this;
  1336. return smalltalk.withContext(function($ctx1) {
  1337. var $1;
  1338. $1=_st(anInterpreter)._interpretSendNode_continue_(self,aBlock);
  1339. return $1;
  1340. }, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.SendNode)})},
  1341. messageSends: ["interpretSendNode:continue:"]}),
  1342. smalltalk.SendNode);
  1343. smalltalk.addMethod(
  1344. smalltalk.method({
  1345. selector: "isSteppingNode",
  1346. fn: function (){
  1347. var self=this;
  1348. return smalltalk.withContext(function($ctx1) {
  1349. return true;
  1350. }, function($ctx1) {$ctx1.fill(self,"isSteppingNode",{},smalltalk.SendNode)})},
  1351. messageSends: []}),
  1352. smalltalk.SendNode);
  1353. smalltalk.addMethod(
  1354. smalltalk.method({
  1355. selector: "interpreter:continue:",
  1356. fn: function (anInterpreter,aBlock){
  1357. var self=this;
  1358. return smalltalk.withContext(function($ctx1) {
  1359. var $1;
  1360. $1=_st(anInterpreter)._interpretSequenceNode_continue_(self,aBlock);
  1361. return $1;
  1362. }, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.SequenceNode)})},
  1363. messageSends: ["interpretSequenceNode:continue:"]}),
  1364. smalltalk.SequenceNode);
  1365. smalltalk.addMethod(
  1366. smalltalk.method({
  1367. selector: "interpreter:continue:",
  1368. fn: function (anInterpreter,aBlock){
  1369. var self=this;
  1370. return smalltalk.withContext(function($ctx1) {
  1371. var $1;
  1372. $1=_st(anInterpreter)._interpretBlockSequenceNode_continue_(self,aBlock);
  1373. return $1;
  1374. }, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.BlockSequenceNode)})},
  1375. messageSends: ["interpretBlockSequenceNode:continue:"]}),
  1376. smalltalk.BlockSequenceNode);
  1377. smalltalk.addMethod(
  1378. smalltalk.method({
  1379. selector: "interpreter:continue:",
  1380. fn: function (anInterpreter,aBlock){
  1381. var self=this;
  1382. return smalltalk.withContext(function($ctx1) {
  1383. var $1;
  1384. $1=_st(anInterpreter)._interpretValueNode_continue_(self,aBlock);
  1385. return $1;
  1386. }, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.ValueNode)})},
  1387. messageSends: ["interpretValueNode:continue:"]}),
  1388. smalltalk.ValueNode);
  1389. smalltalk.addMethod(
  1390. smalltalk.method({
  1391. selector: "interpreter:continue:",
  1392. fn: function (anInterpreter,aBlock){
  1393. var self=this;
  1394. return smalltalk.withContext(function($ctx1) {
  1395. var $1;
  1396. $1=_st(anInterpreter)._interpretVariableNode_continue_(self,aBlock);
  1397. return $1;
  1398. }, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.VariableNode)})},
  1399. messageSends: ["interpretVariableNode:continue:"]}),
  1400. smalltalk.VariableNode);
  1401. smalltalk.addMethod(
  1402. smalltalk.method({
  1403. selector: "interpreter:continue:",
  1404. fn: function (anInterpreter,aBlock){
  1405. var self=this;
  1406. return smalltalk.withContext(function($ctx1) {
  1407. var $1;
  1408. $1=_st(anInterpreter)._interpretClassReferenceNode_continue_(self,aBlock);
  1409. return $1;
  1410. }, function($ctx1) {$ctx1.fill(self,"interpreter:continue:",{anInterpreter:anInterpreter,aBlock:aBlock},smalltalk.ClassReferenceNode)})},
  1411. messageSends: ["interpretClassReferenceNode:continue:"]}),
  1412. smalltalk.ClassReferenceNode);