Compiler-Interpreter.deploy.js 52 KB

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