2
0

Compiler-IR.deploy.js 48 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669
  1. smalltalk.addPackage('Compiler-IR', {});
  2. smalltalk.addClass('IRASTTranslator', smalltalk.NodeVisitor, ['builder', 'source'], 'Compiler-IR');
  3. smalltalk.addMethod(
  4. "_builder",
  5. smalltalk.method({
  6. selector: "builder",
  7. fn: function () {
  8. var self=this;
  9. return (($receiver = self['@builder']) == nil || $receiver == undefined) ? (function(){return (self['@builder']=smalltalk.send((smalltalk.IRBuilder || IRBuilder), "_new", []));})() : $receiver;
  10. return self;}
  11. }),
  12. smalltalk.IRASTTranslator);
  13. smalltalk.addMethod(
  14. "_builder_",
  15. smalltalk.method({
  16. selector: "builder:",
  17. fn: function (aBuilder) {
  18. var self=this;
  19. (self['@builder']=aBuilder);
  20. return self;}
  21. }),
  22. smalltalk.IRASTTranslator);
  23. smalltalk.addMethod(
  24. "_source",
  25. smalltalk.method({
  26. selector: "source",
  27. fn: function () {
  28. var self=this;
  29. return self['@source'];
  30. return self;}
  31. }),
  32. smalltalk.IRASTTranslator);
  33. smalltalk.addMethod(
  34. "_source_",
  35. smalltalk.method({
  36. selector: "source:",
  37. fn: function (aString) {
  38. var self=this;
  39. (self['@source']=aString);
  40. return self;}
  41. }),
  42. smalltalk.IRASTTranslator);
  43. smalltalk.addMethod(
  44. "_visitAssignmentNode_",
  45. smalltalk.method({
  46. selector: "visitAssignmentNode:",
  47. fn: function (aNode) {
  48. var self=this;
  49. (function($rec){smalltalk.send($rec, "_with_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(aNode, "_left", [])]);})]);return smalltalk.send($rec, "_with_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(aNode, "_right", [])]);})]);})(smalltalk.send(smalltalk.send(self, "_builder", []), "_assignment", []));
  50. return self;}
  51. }),
  52. smalltalk.IRASTTranslator);
  53. smalltalk.addMethod(
  54. "_visitBlockNode_",
  55. smalltalk.method({
  56. selector: "visitBlockNode:",
  57. fn: function (aNode) {
  58. var self=this;
  59. (function($rec){smalltalk.send($rec, "_with_", [(function(){return smalltalk.send(self, "_visitBlockNode_", [aNode], smalltalk.IRASTTranslator.superclass || nil);})]);return smalltalk.send($rec, "_arguments_", [smalltalk.send(aNode, "_parameters", [])]);})(smalltalk.send(smalltalk.send(self, "_builder", []), "_closure", []));
  60. return self;}
  61. }),
  62. smalltalk.IRASTTranslator);
  63. smalltalk.addMethod(
  64. "_visitJSStatementNode_",
  65. smalltalk.method({
  66. selector: "visitJSStatementNode:",
  67. fn: function (aNode) {
  68. var self=this;
  69. smalltalk.send(smalltalk.send(self, "_builder", []), "_verbatim_", [smalltalk.send(aNode, "_source", [])]);
  70. return self;}
  71. }),
  72. smalltalk.IRASTTranslator);
  73. smalltalk.addMethod(
  74. "_visitMethodNode_",
  75. smalltalk.method({
  76. selector: "visitMethodNode:",
  77. fn: function (aNode) {
  78. var self=this;
  79. (function($rec){smalltalk.send($rec, "_source_", [smalltalk.send(self, "_source", [])]);smalltalk.send($rec, "_arguments_", [smalltalk.send(aNode, "_arguments", [])]);smalltalk.send($rec, "_selector_", [smalltalk.send(aNode, "_selector", [])]);smalltalk.send($rec, "_messageSends_", [smalltalk.send(aNode, "_messageSends", [])]);return smalltalk.send($rec, "_classReferences_", [smalltalk.send(aNode, "_classReferences", [])]);})(smalltalk.send(smalltalk.send(self, "_builder", []), "_method", []));
  80. smalltalk.send(smalltalk.send(smalltalk.send(aNode, "_scope", []), "_temps", []), "_do_", [(function(each){return smalltalk.send(smalltalk.send(smalltalk.send(self, "_builder", []), "_tempDeclaration", []), "_name_", [smalltalk.send(each, "_name", [])]);})]);
  81. ((($receiver = smalltalk.send(aNode, "_hasNonLocalReturn", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(smalltalk.send(smalltalk.send(self, "_builder", []), "_nonLocalReturnHandling", []), "_with_", [(function(){return smalltalk.send(self, "_visitMethodNode_", [aNode], smalltalk.IRASTTranslator.superclass || nil);})]);})() : (function(){return smalltalk.send(self, "_visitMethodNode_", [aNode], smalltalk.IRASTTranslator.superclass || nil);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(self, "_builder", []), "_nonLocalReturnHandling", []), "_with_", [(function(){return smalltalk.send(self, "_visitMethodNode_", [aNode], smalltalk.IRASTTranslator.superclass || nil);})]);}), (function(){return smalltalk.send(self, "_visitMethodNode_", [aNode], smalltalk.IRASTTranslator.superclass || nil);})]));
  82. return self;}
  83. }),
  84. smalltalk.IRASTTranslator);
  85. smalltalk.addMethod(
  86. "_visitReturnNode_",
  87. smalltalk.method({
  88. selector: "visitReturnNode:",
  89. fn: function (aNode) {
  90. var self=this;
  91. smalltalk.send(((($receiver = smalltalk.send(aNode, "_nonLocalReturn", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(smalltalk.send(self, "_builder", []), "_nonLocalReturn", []);})() : (function(){return smalltalk.send(smalltalk.send(self, "_builder", []), "_return", []);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(self, "_builder", []), "_nonLocalReturn", []);}), (function(){return smalltalk.send(smalltalk.send(self, "_builder", []), "_return", []);})])), "_with_", [(function(){return smalltalk.send(self, "_visitReturnNode_", [aNode], smalltalk.IRASTTranslator.superclass || nil);})]);
  92. return self;}
  93. }),
  94. smalltalk.IRASTTranslator);
  95. smalltalk.addMethod(
  96. "_visitSendNode_",
  97. smalltalk.method({
  98. selector: "visitSendNode:",
  99. fn: function (aNode) {
  100. var self=this;
  101. (function($rec){smalltalk.send($rec, "_selector_", [smalltalk.send(aNode, "_selector", [])]);return smalltalk.send($rec, "_with_", [(function(){smalltalk.send(self, "_visit_", [smalltalk.send(aNode, "_receiver", [])]);return smalltalk.send(smalltalk.send(aNode, "_arguments", []), "_do_", [(function(each){return smalltalk.send(self, "_visit_", [each]);})]);})]);})(smalltalk.send(smalltalk.send(self, "_builder", []), "_send", []));
  102. return self;}
  103. }),
  104. smalltalk.IRASTTranslator);
  105. smalltalk.addMethod(
  106. "_visitSequenceNode_",
  107. smalltalk.method({
  108. selector: "visitSequenceNode:",
  109. fn: function (aNode) {
  110. var self=this;
  111. smalltalk.send(smalltalk.send(smalltalk.send(self, "_builder", []), "_sequence", []), "_with_", [(function(){return smalltalk.send(self, "_visitSequenceNode_", [aNode], smalltalk.IRASTTranslator.superclass || nil);})]);
  112. return self;}
  113. }),
  114. smalltalk.IRASTTranslator);
  115. smalltalk.addMethod(
  116. "_visitValueNode_",
  117. smalltalk.method({
  118. selector: "visitValueNode:",
  119. fn: function (aNode) {
  120. var self=this;
  121. smalltalk.send(smalltalk.send(self, "_builder", []), "_value_", [smalltalk.send(aNode, "_value", [])]);
  122. return self;}
  123. }),
  124. smalltalk.IRASTTranslator);
  125. smalltalk.addMethod(
  126. "_visitVariableNode_",
  127. smalltalk.method({
  128. selector: "visitVariableNode:",
  129. fn: function (aNode) {
  130. var self=this;
  131. smalltalk.send(smalltalk.send(self, "_builder", []), "_variable_", [smalltalk.send(aNode, "_binding", [])]);
  132. return self;}
  133. }),
  134. smalltalk.IRASTTranslator);
  135. smalltalk.addClass('IRASTResolver', smalltalk.IRASTTranslator, ['nextAlias'], 'Compiler-IR');
  136. smalltalk.addMethod(
  137. "_nextAlias",
  138. smalltalk.method({
  139. selector: "nextAlias",
  140. fn: function () {
  141. var self=this;
  142. (($receiver = self['@nextAlias']) == nil || $receiver == undefined) ? (function(){return (self['@nextAlias']=(0));})() : $receiver;
  143. (self['@nextAlias']=((($receiver = self['@nextAlias']).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)])));
  144. return smalltalk.send("$", "__comma", [smalltalk.send(self['@nextAlias'], "_asString", [])]);
  145. return self;}
  146. }),
  147. smalltalk.IRASTResolver);
  148. smalltalk.addMethod(
  149. "_resolve_",
  150. smalltalk.method({
  151. selector: "resolve:",
  152. fn: function (aNode) {
  153. var self=this;
  154. ((($receiver = smalltalk.send(aNode, "_isBlockSequenceNode", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_do_", [(function(each){return smalltalk.send(self, "_resolve_", [each]);})]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_do_", [(function(each){return smalltalk.send(self, "_resolve_", [each]);})]);})]));
  155. ((($receiver = smalltalk.send(aNode, "_shouldBeAliased", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){var alias=nil;
  156. (alias=smalltalk.send(self, "_nextAlias", []));smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_builder", []), "_method", []), "_internalVariables", []), "_add_", [alias]);(function($rec){smalltalk.send($rec, "_with_", [(function(){return smalltalk.send(smalltalk.send(self, "_builder", []), "_variable_", [(function($rec){smalltalk.send($rec, "_name_", [alias]);smalltalk.send($rec, "_node_", [aNode]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.AliasVar || AliasVar), "_new", []))]);})]);return smalltalk.send($rec, "_with_", [(function(){return smalltalk.send(self, "_visit_resolving_", [aNode, false]);})]);})(smalltalk.send(smalltalk.send(self, "_builder", []), "_assignment", []));return smalltalk.send(aNode, "_alias_", [alias]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){var alias=nil;
  157. (alias=smalltalk.send(self, "_nextAlias", []));smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_builder", []), "_method", []), "_internalVariables", []), "_add_", [alias]);(function($rec){smalltalk.send($rec, "_with_", [(function(){return smalltalk.send(smalltalk.send(self, "_builder", []), "_variable_", [(function($rec){smalltalk.send($rec, "_name_", [alias]);smalltalk.send($rec, "_node_", [aNode]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.AliasVar || AliasVar), "_new", []))]);})]);return smalltalk.send($rec, "_with_", [(function(){return smalltalk.send(self, "_visit_resolving_", [aNode, false]);})]);})(smalltalk.send(smalltalk.send(self, "_builder", []), "_assignment", []));return smalltalk.send(aNode, "_alias_", [alias]);})]));
  158. return self;}
  159. }),
  160. smalltalk.IRASTResolver);
  161. smalltalk.addMethod(
  162. "_visit_",
  163. smalltalk.method({
  164. selector: "visit:",
  165. fn: function (aNode) {
  166. var self=this;
  167. smalltalk.send(self, "_visit_resolving_", [aNode, smalltalk.send(aNode, "_canAliasChildren", [])]);
  168. return self;}
  169. }),
  170. smalltalk.IRASTResolver);
  171. smalltalk.addMethod(
  172. "_visit_resolving_",
  173. smalltalk.method({
  174. selector: "visit:resolving:",
  175. fn: function (aNode, aBoolean) {
  176. var self=this;
  177. ((($receiver = aBoolean).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_resolve_", [aNode]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(self, "_resolve_", [aNode]);})]));
  178. ((($receiver = smalltalk.send(aNode, "_isAliased", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "_visitAliased_", [aNode]);})() : (function(){return smalltalk.send(self, "_visit_", [aNode], smalltalk.IRASTResolver.superclass || nil);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_visitAliased_", [aNode]);}), (function(){return smalltalk.send(self, "_visit_", [aNode], smalltalk.IRASTResolver.superclass || nil);})]));
  179. return self;}
  180. }),
  181. smalltalk.IRASTResolver);
  182. smalltalk.addMethod(
  183. "_visitAliased_",
  184. smalltalk.method({
  185. selector: "visitAliased:",
  186. fn: function (aNode) {
  187. var self=this;
  188. return smalltalk.send(smalltalk.send(self, "_builder", []), "_variable_", [(function($rec){smalltalk.send($rec, "_name_", [smalltalk.send(aNode, "_alias", [])]);smalltalk.send($rec, "_node_", [aNode]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.AliasVar || AliasVar), "_new", []))]);
  189. return self;}
  190. }),
  191. smalltalk.IRASTResolver);
  192. smalltalk.addClass('IRBuilder', smalltalk.Object, ['method', 'root', 'nextPc'], 'Compiler-IR');
  193. smalltalk.addMethod(
  194. "_add_",
  195. smalltalk.method({
  196. selector: "add:",
  197. fn: function (aClass) {
  198. var self=this;
  199. return smalltalk.send(smalltalk.send(self, "_root", []), "_append_", [smalltalk.send(aClass, "_on_", [self])]);
  200. return self;}
  201. }),
  202. smalltalk.IRBuilder);
  203. smalltalk.addMethod(
  204. "_append_",
  205. smalltalk.method({
  206. selector: "append:",
  207. fn: function (anObject) {
  208. var self=this;
  209. return smalltalk.send(self['@root'], "_append_", [anObject]);
  210. return self;}
  211. }),
  212. smalltalk.IRBuilder);
  213. smalltalk.addMethod(
  214. "_assignment",
  215. smalltalk.method({
  216. selector: "assignment",
  217. fn: function () {
  218. var self=this;
  219. return smalltalk.send(self, "_add_", [(smalltalk.IRAssignment || IRAssignment)]);
  220. return self;}
  221. }),
  222. smalltalk.IRBuilder);
  223. smalltalk.addMethod(
  224. "_closure",
  225. smalltalk.method({
  226. selector: "closure",
  227. fn: function () {
  228. var self=this;
  229. return smalltalk.send(self, "_add_", [(smalltalk.IRClosure || IRClosure)]);
  230. return self;}
  231. }),
  232. smalltalk.IRBuilder);
  233. smalltalk.addMethod(
  234. "_emitOn_",
  235. smalltalk.method({
  236. selector: "emitOn:",
  237. fn: function (aStream) {
  238. var self=this;
  239. smalltalk.send(self['@method'], "_emitOn_", [aStream]);
  240. return self;}
  241. }),
  242. smalltalk.IRBuilder);
  243. smalltalk.addMethod(
  244. "_initialize",
  245. smalltalk.method({
  246. selector: "initialize",
  247. fn: function () {
  248. var self=this;
  249. smalltalk.send(self, "_initialize", [], smalltalk.IRBuilder.superclass || nil);
  250. (self['@root']=(self['@method']=smalltalk.send((smalltalk.IRMethod || IRMethod), "_on_", [self])));
  251. return self;}
  252. }),
  253. smalltalk.IRBuilder);
  254. smalltalk.addMethod(
  255. "_method",
  256. smalltalk.method({
  257. selector: "method",
  258. fn: function () {
  259. var self=this;
  260. return self['@method'];
  261. return self;}
  262. }),
  263. smalltalk.IRBuilder);
  264. smalltalk.addMethod(
  265. "_nextPc",
  266. smalltalk.method({
  267. selector: "nextPc",
  268. fn: function () {
  269. var self=this;
  270. (($receiver = self['@nextPc']) == nil || $receiver == undefined) ? (function(){return (self['@nextPc']=(0));})() : $receiver;
  271. (self['@nextPc']=((($receiver = self['@nextPc']).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)])));
  272. return self['@nextPc'];
  273. return self;}
  274. }),
  275. smalltalk.IRBuilder);
  276. smalltalk.addMethod(
  277. "_nonLocalReturn",
  278. smalltalk.method({
  279. selector: "nonLocalReturn",
  280. fn: function () {
  281. var self=this;
  282. return smalltalk.send(self, "_add_", [(smalltalk.IRNonLocalReturn || IRNonLocalReturn)]);
  283. return self;}
  284. }),
  285. smalltalk.IRBuilder);
  286. smalltalk.addMethod(
  287. "_nonLocalReturnHandling",
  288. smalltalk.method({
  289. selector: "nonLocalReturnHandling",
  290. fn: function () {
  291. var self=this;
  292. return smalltalk.send(self, "_add_", [(smalltalk.IRNonLocalReturnHandling || IRNonLocalReturnHandling)]);
  293. return self;}
  294. }),
  295. smalltalk.IRBuilder);
  296. smalltalk.addMethod(
  297. "_return",
  298. smalltalk.method({
  299. selector: "return",
  300. fn: function () {
  301. var self=this;
  302. return smalltalk.send(self, "_add_", [(smalltalk.IRReturn || IRReturn)]);
  303. return self;}
  304. }),
  305. smalltalk.IRBuilder);
  306. smalltalk.addMethod(
  307. "_root",
  308. smalltalk.method({
  309. selector: "root",
  310. fn: function () {
  311. var self=this;
  312. return self['@root'];
  313. return self;}
  314. }),
  315. smalltalk.IRBuilder);
  316. smalltalk.addMethod(
  317. "_root_",
  318. smalltalk.method({
  319. selector: "root:",
  320. fn: function (anIRInstruction) {
  321. var self=this;
  322. (self['@root']=anIRInstruction);
  323. return self;}
  324. }),
  325. smalltalk.IRBuilder);
  326. smalltalk.addMethod(
  327. "_send",
  328. smalltalk.method({
  329. selector: "send",
  330. fn: function () {
  331. var self=this;
  332. return smalltalk.send(self, "_add_", [(smalltalk.IRSend || IRSend)]);
  333. return self;}
  334. }),
  335. smalltalk.IRBuilder);
  336. smalltalk.addMethod(
  337. "_sequence",
  338. smalltalk.method({
  339. selector: "sequence",
  340. fn: function () {
  341. var self=this;
  342. return smalltalk.send(self, "_add_", [(smalltalk.IRSequence || IRSequence)]);
  343. return self;}
  344. }),
  345. smalltalk.IRBuilder);
  346. smalltalk.addMethod(
  347. "_statement",
  348. smalltalk.method({
  349. selector: "statement",
  350. fn: function () {
  351. var self=this;
  352. return smalltalk.send(self, "_add_", [(smalltalk.IRStatement || IRStatement)]);
  353. return self;}
  354. }),
  355. smalltalk.IRBuilder);
  356. smalltalk.addMethod(
  357. "_tempDeclaration",
  358. smalltalk.method({
  359. selector: "tempDeclaration",
  360. fn: function () {
  361. var self=this;
  362. return smalltalk.send(self, "_add_", [(smalltalk.IRTempDeclaration || IRTempDeclaration)]);
  363. return self;}
  364. }),
  365. smalltalk.IRBuilder);
  366. smalltalk.addMethod(
  367. "_value",
  368. smalltalk.method({
  369. selector: "value",
  370. fn: function () {
  371. var self=this;
  372. return smalltalk.send(self, "_add_", [(smalltalk.IRValue || IRValue)]);
  373. return self;}
  374. }),
  375. smalltalk.IRBuilder);
  376. smalltalk.addMethod(
  377. "_value_",
  378. smalltalk.method({
  379. selector: "value:",
  380. fn: function (aString) {
  381. var self=this;
  382. return (function($rec){smalltalk.send($rec, "_value_", [aString]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_value", []));
  383. return self;}
  384. }),
  385. smalltalk.IRBuilder);
  386. smalltalk.addMethod(
  387. "_variable",
  388. smalltalk.method({
  389. selector: "variable",
  390. fn: function () {
  391. var self=this;
  392. return smalltalk.send(self, "_add_", [(smalltalk.IRVariable || IRVariable)]);
  393. return self;}
  394. }),
  395. smalltalk.IRBuilder);
  396. smalltalk.addMethod(
  397. "_variable_",
  398. smalltalk.method({
  399. selector: "variable:",
  400. fn: function (aScopeVariable) {
  401. var self=this;
  402. return (function($rec){smalltalk.send($rec, "_variable_", [aScopeVariable]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_variable", []));
  403. return self;}
  404. }),
  405. smalltalk.IRBuilder);
  406. smalltalk.addMethod(
  407. "_verbatim_",
  408. smalltalk.method({
  409. selector: "verbatim:",
  410. fn: function (aString) {
  411. var self=this;
  412. return (function($rec){smalltalk.send($rec, "_source_", [aString]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_add_", [(smalltalk.IRVerbatim || IRVerbatim)]));
  413. return self;}
  414. }),
  415. smalltalk.IRBuilder);
  416. smalltalk.addMethod(
  417. "_with_",
  418. smalltalk.method({
  419. selector: "with:",
  420. fn: function (anObject) {
  421. var self=this;
  422. smalltalk.send(smalltalk.send(self, "_root", []), "_with_", [anObject]);
  423. return self;}
  424. }),
  425. smalltalk.IRBuilder);
  426. smalltalk.addClass('IRInstruction', smalltalk.Object, ['builder', 'instructions'], 'Compiler-IR');
  427. smalltalk.addMethod(
  428. "_accept_",
  429. smalltalk.method({
  430. selector: "accept:",
  431. fn: function (aVisitor) {
  432. var self=this;
  433. smalltalk.send(aVisitor, "_visitIRInstruction_", [self]);
  434. return self;}
  435. }),
  436. smalltalk.IRInstruction);
  437. smalltalk.addMethod(
  438. "_append_",
  439. smalltalk.method({
  440. selector: "append:",
  441. fn: function (anObject) {
  442. var self=this;
  443. smalltalk.send(anObject, "_appendToInstruction_", [self]);
  444. return anObject;
  445. return self;}
  446. }),
  447. smalltalk.IRInstruction);
  448. smalltalk.addMethod(
  449. "_appendBlock_",
  450. smalltalk.method({
  451. selector: "appendBlock:",
  452. fn: function (aBlock) {
  453. var self=this;
  454. var root=nil;
  455. (root=smalltalk.send(smalltalk.send(self, "_builder", []), "_root", []));
  456. smalltalk.send(smalltalk.send(self, "_builder", []), "_root_", [self]);
  457. smalltalk.send(aBlock, "_value", []);
  458. smalltalk.send(smalltalk.send(self, "_builder", []), "_root_", [root]);
  459. return self;}
  460. }),
  461. smalltalk.IRInstruction);
  462. smalltalk.addMethod(
  463. "_appendInstruction_",
  464. smalltalk.method({
  465. selector: "appendInstruction:",
  466. fn: function (anIRInstruction) {
  467. var self=this;
  468. smalltalk.send(smalltalk.send(self, "_instructions", []), "_add_", [anIRInstruction]);
  469. return self;}
  470. }),
  471. smalltalk.IRInstruction);
  472. smalltalk.addMethod(
  473. "_appendString_",
  474. smalltalk.method({
  475. selector: "appendString:",
  476. fn: function (aString) {
  477. var self=this;
  478. smalltalk.send(self, "_append_", [smalltalk.send(smalltalk.send(self, "_builder", []), "_value_", [aString])]);
  479. return self;}
  480. }),
  481. smalltalk.IRInstruction);
  482. smalltalk.addMethod(
  483. "_appendToInstruction_",
  484. smalltalk.method({
  485. selector: "appendToInstruction:",
  486. fn: function (anIRInstruction) {
  487. var self=this;
  488. smalltalk.send(anIRInstruction, "_appendInstruction_", [self]);
  489. return self;}
  490. }),
  491. smalltalk.IRInstruction);
  492. smalltalk.addMethod(
  493. "_builder",
  494. smalltalk.method({
  495. selector: "builder",
  496. fn: function () {
  497. var self=this;
  498. return self['@builder'];
  499. return self;}
  500. }),
  501. smalltalk.IRInstruction);
  502. smalltalk.addMethod(
  503. "_builder_",
  504. smalltalk.method({
  505. selector: "builder:",
  506. fn: function (aBuilder) {
  507. var self=this;
  508. (self['@builder']=aBuilder);
  509. return self;}
  510. }),
  511. smalltalk.IRInstruction);
  512. smalltalk.addMethod(
  513. "_emitOn_",
  514. smalltalk.method({
  515. selector: "emitOn:",
  516. fn: function (aStream) {
  517. var self=this;
  518. smalltalk.send(smalltalk.send(self, "_instructions", []), "_do_", [(function(each){return smalltalk.send(each, "_emitOn_", [aStream]);})]);
  519. return self;}
  520. }),
  521. smalltalk.IRInstruction);
  522. smalltalk.addMethod(
  523. "_instructions",
  524. smalltalk.method({
  525. selector: "instructions",
  526. fn: function () {
  527. var self=this;
  528. return (($receiver = self['@instructions']) == nil || $receiver == undefined) ? (function(){return (self['@instructions']=smalltalk.send((smalltalk.OrderedCollection || OrderedCollection), "_new", []));})() : $receiver;
  529. return self;}
  530. }),
  531. smalltalk.IRInstruction);
  532. smalltalk.addMethod(
  533. "_with_",
  534. smalltalk.method({
  535. selector: "with:",
  536. fn: function (anObject) {
  537. var self=this;
  538. smalltalk.send(anObject, "_appendToInstruction_", [self]);
  539. return self;}
  540. }),
  541. smalltalk.IRInstruction);
  542. smalltalk.addMethod(
  543. "_on_",
  544. smalltalk.method({
  545. selector: "on:",
  546. fn: function (aBuilder) {
  547. var self=this;
  548. return (function($rec){smalltalk.send($rec, "_builder_", [aBuilder]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", []));
  549. return self;}
  550. }),
  551. smalltalk.IRInstruction.klass);
  552. smalltalk.addClass('IRAssignment', smalltalk.IRInstruction, ['left', 'right'], 'Compiler-IR');
  553. smalltalk.addMethod(
  554. "_accept_",
  555. smalltalk.method({
  556. selector: "accept:",
  557. fn: function (aVisitor) {
  558. var self=this;
  559. smalltalk.send(aVisitor, "_visitIRAssignment_", [self]);
  560. return self;}
  561. }),
  562. smalltalk.IRAssignment);
  563. smalltalk.addMethod(
  564. "_emitOn_",
  565. smalltalk.method({
  566. selector: "emitOn:",
  567. fn: function (aStream) {
  568. var self=this;
  569. smalltalk.send(aStream, "_nextPutAssignment_to_", [smalltalk.send(smalltalk.send(self, "_instructions", []), "_first", []), smalltalk.send(smalltalk.send(self, "_instructions", []), "_last", [])]);
  570. return self;}
  571. }),
  572. smalltalk.IRAssignment);
  573. smalltalk.addClass('IRClosure', smalltalk.IRInstruction, ['arguments'], 'Compiler-IR');
  574. smalltalk.addMethod(
  575. "_accept_",
  576. smalltalk.method({
  577. selector: "accept:",
  578. fn: function (aVisitor) {
  579. var self=this;
  580. smalltalk.send(aVisitor, "_visitIRClosure_", [self]);
  581. return self;}
  582. }),
  583. smalltalk.IRClosure);
  584. smalltalk.addMethod(
  585. "_arguments",
  586. smalltalk.method({
  587. selector: "arguments",
  588. fn: function () {
  589. var self=this;
  590. return self['@arguments'];
  591. return self;}
  592. }),
  593. smalltalk.IRClosure);
  594. smalltalk.addMethod(
  595. "_arguments_",
  596. smalltalk.method({
  597. selector: "arguments:",
  598. fn: function (aCollection) {
  599. var self=this;
  600. (self['@arguments']=aCollection);
  601. return self;}
  602. }),
  603. smalltalk.IRClosure);
  604. smalltalk.addMethod(
  605. "_emitOn_",
  606. smalltalk.method({
  607. selector: "emitOn:",
  608. fn: function (aStream) {
  609. var self=this;
  610. smalltalk.send(aStream, "_nextPutClosureWith_arguments_", [(function(){return smalltalk.send(self, "_emitOn_", [aStream], smalltalk.IRClosure.superclass || nil);}), smalltalk.send(self, "_arguments", [])]);
  611. return self;}
  612. }),
  613. smalltalk.IRClosure);
  614. smalltalk.addClass('IRMethod', smalltalk.IRInstruction, ['source', 'selector', 'classReferences', 'messageSends', 'arguments', 'internalVariables', 'source'], 'Compiler-IR');
  615. smalltalk.addMethod(
  616. "_accept_",
  617. smalltalk.method({
  618. selector: "accept:",
  619. fn: function (aVisitor) {
  620. var self=this;
  621. smalltalk.send(aVisitor, "_visitIRMethod_", [self]);
  622. return self;}
  623. }),
  624. smalltalk.IRMethod);
  625. smalltalk.addMethod(
  626. "_arguments",
  627. smalltalk.method({
  628. selector: "arguments",
  629. fn: function () {
  630. var self=this;
  631. return self['@arguments'];
  632. return self;}
  633. }),
  634. smalltalk.IRMethod);
  635. smalltalk.addMethod(
  636. "_arguments_",
  637. smalltalk.method({
  638. selector: "arguments:",
  639. fn: function (aCollection) {
  640. var self=this;
  641. (self['@arguments']=aCollection);
  642. return self;}
  643. }),
  644. smalltalk.IRMethod);
  645. smalltalk.addMethod(
  646. "_classReferences",
  647. smalltalk.method({
  648. selector: "classReferences",
  649. fn: function () {
  650. var self=this;
  651. return self['@classReferences'];
  652. return self;}
  653. }),
  654. smalltalk.IRMethod);
  655. smalltalk.addMethod(
  656. "_classReferences_",
  657. smalltalk.method({
  658. selector: "classReferences:",
  659. fn: function (aCollection) {
  660. var self=this;
  661. (self['@classReferences']=aCollection);
  662. return self;}
  663. }),
  664. smalltalk.IRMethod);
  665. smalltalk.addMethod(
  666. "_emitOn_",
  667. smalltalk.method({
  668. selector: "emitOn:",
  669. fn: function (aStream) {
  670. var self=this;
  671. smalltalk.send(aStream, "_nextPutMethodDeclaration_with_", [self, (function(){return smalltalk.send(aStream, "_nextPutFunctionWith_arguments_", [(function(){((($receiver = smalltalk.send(smalltalk.send(self, "_internalVariables", []), "_notEmpty", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(aStream, "_nextPutVars_", [smalltalk.send(self, "_internalVariables", [])]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(aStream, "_nextPutVars_", [smalltalk.send(self, "_internalVariables", [])]);})]));return smalltalk.send(self, "_emitOn_", [aStream], smalltalk.IRMethod.superclass || nil);}), smalltalk.send(self, "_arguments", [])]);})]);
  672. return self;}
  673. }),
  674. smalltalk.IRMethod);
  675. smalltalk.addMethod(
  676. "_internalVariables",
  677. smalltalk.method({
  678. selector: "internalVariables",
  679. fn: function () {
  680. var self=this;
  681. return (($receiver = self['@internalVariables']) == nil || $receiver == undefined) ? (function(){return (self['@internalVariables']=smalltalk.send((smalltalk.Set || Set), "_new", []));})() : $receiver;
  682. return self;}
  683. }),
  684. smalltalk.IRMethod);
  685. smalltalk.addMethod(
  686. "_messageSends",
  687. smalltalk.method({
  688. selector: "messageSends",
  689. fn: function () {
  690. var self=this;
  691. return self['@messageSends'];
  692. return self;}
  693. }),
  694. smalltalk.IRMethod);
  695. smalltalk.addMethod(
  696. "_messageSends_",
  697. smalltalk.method({
  698. selector: "messageSends:",
  699. fn: function (aCollection) {
  700. var self=this;
  701. (self['@messageSends']=aCollection);
  702. return self;}
  703. }),
  704. smalltalk.IRMethod);
  705. smalltalk.addMethod(
  706. "_selector",
  707. smalltalk.method({
  708. selector: "selector",
  709. fn: function () {
  710. var self=this;
  711. return self['@selector'];
  712. return self;}
  713. }),
  714. smalltalk.IRMethod);
  715. smalltalk.addMethod(
  716. "_selector_",
  717. smalltalk.method({
  718. selector: "selector:",
  719. fn: function (aString) {
  720. var self=this;
  721. (self['@selector']=aString);
  722. return self;}
  723. }),
  724. smalltalk.IRMethod);
  725. smalltalk.addMethod(
  726. "_source",
  727. smalltalk.method({
  728. selector: "source",
  729. fn: function () {
  730. var self=this;
  731. return self['@source'];
  732. return self;}
  733. }),
  734. smalltalk.IRMethod);
  735. smalltalk.addMethod(
  736. "_source_",
  737. smalltalk.method({
  738. selector: "source:",
  739. fn: function (aString) {
  740. var self=this;
  741. (self['@source']=aString);
  742. return self;}
  743. }),
  744. smalltalk.IRMethod);
  745. smalltalk.addClass('IRNonLocalReturn', smalltalk.IRInstruction, [], 'Compiler-IR');
  746. smalltalk.addMethod(
  747. "_accept_",
  748. smalltalk.method({
  749. selector: "accept:",
  750. fn: function (aVisitor) {
  751. var self=this;
  752. smalltalk.send(aVisitor, "_visitIRNonLocalReturn_", [self]);
  753. return self;}
  754. }),
  755. smalltalk.IRNonLocalReturn);
  756. smalltalk.addMethod(
  757. "_emitOn_",
  758. smalltalk.method({
  759. selector: "emitOn:",
  760. fn: function (aStream) {
  761. var self=this;
  762. smalltalk.send(aStream, "_nextPutNonLocalReturnWith_", [(function(){return smalltalk.send(self, "_emitOn_", [aStream], smalltalk.IRNonLocalReturn.superclass || nil);})]);
  763. return self;}
  764. }),
  765. smalltalk.IRNonLocalReturn);
  766. smalltalk.addClass('IRNonLocalReturnHandling', smalltalk.IRInstruction, [], 'Compiler-IR');
  767. smalltalk.addMethod(
  768. "_accept_",
  769. smalltalk.method({
  770. selector: "accept:",
  771. fn: function (aVisitor) {
  772. var self=this;
  773. smalltalk.send(aVisitor, "_visitIRNonLocalReturnHandling_", [self]);
  774. return self;}
  775. }),
  776. smalltalk.IRNonLocalReturnHandling);
  777. smalltalk.addMethod(
  778. "_emitOn_",
  779. smalltalk.method({
  780. selector: "emitOn:",
  781. fn: function (aStream) {
  782. var self=this;
  783. smalltalk.send(aStream, "_nextPutNonLocalReturnHandlingWith_", [(function(){return smalltalk.send(self, "_emitOn_", [aStream], smalltalk.IRNonLocalReturnHandling.superclass || nil);})]);
  784. return self;}
  785. }),
  786. smalltalk.IRNonLocalReturnHandling);
  787. smalltalk.addClass('IRReturn', smalltalk.IRInstruction, [], 'Compiler-IR');
  788. smalltalk.addMethod(
  789. "_accept_",
  790. smalltalk.method({
  791. selector: "accept:",
  792. fn: function (aVisitor) {
  793. var self=this;
  794. smalltalk.send(aVisitor, "_visitIRReturn_", [self]);
  795. return self;}
  796. }),
  797. smalltalk.IRReturn);
  798. smalltalk.addMethod(
  799. "_emitOn_",
  800. smalltalk.method({
  801. selector: "emitOn:",
  802. fn: function (aStream) {
  803. var self=this;
  804. smalltalk.send(aStream, "_nextPutReturnWith_", [(function(){return smalltalk.send(self, "_emitOn_", [aStream], smalltalk.IRReturn.superclass || nil);})]);
  805. return self;}
  806. }),
  807. smalltalk.IRReturn);
  808. smalltalk.addClass('IRSend', smalltalk.IRInstruction, ['selector', 'superSend'], 'Compiler-IR');
  809. smalltalk.addMethod(
  810. "_accept_",
  811. smalltalk.method({
  812. selector: "accept:",
  813. fn: function (aVisitor) {
  814. var self=this;
  815. smalltalk.send(aVisitor, "_visitIRSend_", [self]);
  816. return self;}
  817. }),
  818. smalltalk.IRSend);
  819. smalltalk.addMethod(
  820. "_emitOn_",
  821. smalltalk.method({
  822. selector: "emitOn:",
  823. fn: function (aStream) {
  824. var self=this;
  825. smalltalk.send(aStream, "_nextPutAll_", ["smalltalk.send("]);
  826. smalltalk.send(smalltalk.send(smalltalk.send(self, "_instructions", []), "_first", []), "_emitOn_", [aStream]);
  827. smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send(smalltalk.send(",\x22", "__comma", [smalltalk.send(smalltalk.send(self, "_selector", []), "_asSelector", [])]), "__comma", ["\x22, ["])]);
  828. smalltalk.send(smalltalk.send(smalltalk.send(self, "_instructions", []), "_allButFirst", []), "_do_separatedBy_", [(function(each){return smalltalk.send(each, "_emitOn_", [aStream]);}), (function(){return smalltalk.send(aStream, "_nextPutAll_", [","]);})]);
  829. smalltalk.send(aStream, "_nextPutAll_", ["])"]);
  830. return self;}
  831. }),
  832. smalltalk.IRSend);
  833. smalltalk.addMethod(
  834. "_selector",
  835. smalltalk.method({
  836. selector: "selector",
  837. fn: function () {
  838. var self=this;
  839. return self['@selector'];
  840. return self;}
  841. }),
  842. smalltalk.IRSend);
  843. smalltalk.addMethod(
  844. "_selector_",
  845. smalltalk.method({
  846. selector: "selector:",
  847. fn: function (aString) {
  848. var self=this;
  849. (self['@selector']=aString);
  850. return self;}
  851. }),
  852. smalltalk.IRSend);
  853. smalltalk.addMethod(
  854. "_superSend",
  855. smalltalk.method({
  856. selector: "superSend",
  857. fn: function () {
  858. var self=this;
  859. return (($receiver = self['@superSend']) == nil || $receiver == undefined) ? (function(){return false;})() : $receiver;
  860. return self;}
  861. }),
  862. smalltalk.IRSend);
  863. smalltalk.addMethod(
  864. "_superSend_",
  865. smalltalk.method({
  866. selector: "superSend:",
  867. fn: function (aBoolean) {
  868. var self=this;
  869. (self['@superSend']=aBoolean);
  870. return self;}
  871. }),
  872. smalltalk.IRSend);
  873. smalltalk.addClass('IRSequence', smalltalk.IRInstruction, [], 'Compiler-IR');
  874. smalltalk.addMethod(
  875. "_accept_",
  876. smalltalk.method({
  877. selector: "accept:",
  878. fn: function (aVisitor) {
  879. var self=this;
  880. smalltalk.send(aVisitor, "_visitIRSequence_", [self]);
  881. return self;}
  882. }),
  883. smalltalk.IRSequence);
  884. smalltalk.addMethod(
  885. "_appendInstruction_",
  886. smalltalk.method({
  887. selector: "appendInstruction:",
  888. fn: function (anIRInstruction) {
  889. var self=this;
  890. smalltalk.send(smalltalk.send(self, "_instructions", []), "_add_", [smalltalk.send(smalltalk.send((smalltalk.IRStatement || IRStatement), "_on_", [smalltalk.send(self, "_builder", [])]), "_with_", [anIRInstruction])]);
  891. return self;}
  892. }),
  893. smalltalk.IRSequence);
  894. smalltalk.addMethod(
  895. "_emitOn_",
  896. smalltalk.method({
  897. selector: "emitOn:",
  898. fn: function (aStream) {
  899. var self=this;
  900. smalltalk.send(aStream, "_nextPutSequenceWith_", [(function(){return smalltalk.send(self, "_emitOn_", [aStream], smalltalk.IRSequence.superclass || nil);})]);
  901. return self;}
  902. }),
  903. smalltalk.IRSequence);
  904. smalltalk.addClass('IRStatement', smalltalk.IRInstruction, ['pc'], 'Compiler-IR');
  905. smalltalk.addMethod(
  906. "_accept_",
  907. smalltalk.method({
  908. selector: "accept:",
  909. fn: function (aVisitor) {
  910. var self=this;
  911. smalltalk.send(aVisitor, "_visitIRStatement_", [self]);
  912. return self;}
  913. }),
  914. smalltalk.IRStatement);
  915. smalltalk.addMethod(
  916. "_emitOn_",
  917. smalltalk.method({
  918. selector: "emitOn:",
  919. fn: function (aStream) {
  920. var self=this;
  921. smalltalk.send(aStream, "_nextPutStatement_with_", [smalltalk.send(self, "_pc", []), (function(){return smalltalk.send(self, "_emitOn_", [aStream], smalltalk.IRStatement.superclass || nil);})]);
  922. return self;}
  923. }),
  924. smalltalk.IRStatement);
  925. smalltalk.addMethod(
  926. "_pc",
  927. smalltalk.method({
  928. selector: "pc",
  929. fn: function () {
  930. var self=this;
  931. return (($receiver = self['@pc']) == nil || $receiver == undefined) ? (function(){return (self['@pc']=smalltalk.send(smalltalk.send(self, "_builder", []), "_nextPc", []));})() : $receiver;
  932. return self;}
  933. }),
  934. smalltalk.IRStatement);
  935. smalltalk.addClass('IRTempDeclaration', smalltalk.IRInstruction, ['name'], 'Compiler-IR');
  936. smalltalk.addMethod(
  937. "_accept_",
  938. smalltalk.method({
  939. selector: "accept:",
  940. fn: function (aVisitor) {
  941. var self=this;
  942. smalltalk.send(aVisitor, "_visitIRTempDeclaration_", [self]);
  943. return self;}
  944. }),
  945. smalltalk.IRTempDeclaration);
  946. smalltalk.addMethod(
  947. "_emitOn_",
  948. smalltalk.method({
  949. selector: "emitOn:",
  950. fn: function (aStream) {
  951. var self=this;
  952. smalltalk.send(aStream, "_nextPutVar_", [smalltalk.send(smalltalk.send(self, "_name", []), "_asVariableName", [])]);
  953. return self;}
  954. }),
  955. smalltalk.IRTempDeclaration);
  956. smalltalk.addMethod(
  957. "_name",
  958. smalltalk.method({
  959. selector: "name",
  960. fn: function () {
  961. var self=this;
  962. return self['@name'];
  963. return self;}
  964. }),
  965. smalltalk.IRTempDeclaration);
  966. smalltalk.addMethod(
  967. "_name_",
  968. smalltalk.method({
  969. selector: "name:",
  970. fn: function (aString) {
  971. var self=this;
  972. (self['@name']=aString);
  973. return self;}
  974. }),
  975. smalltalk.IRTempDeclaration);
  976. smalltalk.addClass('IRValue', smalltalk.IRInstruction, ['value'], 'Compiler-IR');
  977. smalltalk.addMethod(
  978. "_accept_",
  979. smalltalk.method({
  980. selector: "accept:",
  981. fn: function (aVisitor) {
  982. var self=this;
  983. smalltalk.send(aVisitor, "_visitIRValue_", [self]);
  984. return self;}
  985. }),
  986. smalltalk.IRValue);
  987. smalltalk.addMethod(
  988. "_emitOn_",
  989. smalltalk.method({
  990. selector: "emitOn:",
  991. fn: function (aStream) {
  992. var self=this;
  993. smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send(smalltalk.send(self, "_value", []), "_asJavascript", [])]);
  994. return self;}
  995. }),
  996. smalltalk.IRValue);
  997. smalltalk.addMethod(
  998. "_value",
  999. smalltalk.method({
  1000. selector: "value",
  1001. fn: function () {
  1002. var self=this;
  1003. return self['@value'];
  1004. return self;}
  1005. }),
  1006. smalltalk.IRValue);
  1007. smalltalk.addMethod(
  1008. "_value_",
  1009. smalltalk.method({
  1010. selector: "value:",
  1011. fn: function (aString) {
  1012. var self=this;
  1013. (self['@value']=aString);
  1014. return self;}
  1015. }),
  1016. smalltalk.IRValue);
  1017. smalltalk.addClass('IRVariable', smalltalk.IRInstruction, ['variable'], 'Compiler-IR');
  1018. smalltalk.addMethod(
  1019. "_accept_",
  1020. smalltalk.method({
  1021. selector: "accept:",
  1022. fn: function (aVisitor) {
  1023. var self=this;
  1024. smalltalk.send(aVisitor, "_visitIRVariable_", [self]);
  1025. return self;}
  1026. }),
  1027. smalltalk.IRVariable);
  1028. smalltalk.addMethod(
  1029. "_emitOn_",
  1030. smalltalk.method({
  1031. selector: "emitOn:",
  1032. fn: function (aStream) {
  1033. var self=this;
  1034. smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send(smalltalk.send(self, "_variable", []), "_alias", [])]);
  1035. return self;}
  1036. }),
  1037. smalltalk.IRVariable);
  1038. smalltalk.addMethod(
  1039. "_variable",
  1040. smalltalk.method({
  1041. selector: "variable",
  1042. fn: function () {
  1043. var self=this;
  1044. return self['@variable'];
  1045. return self;}
  1046. }),
  1047. smalltalk.IRVariable);
  1048. smalltalk.addMethod(
  1049. "_variable_",
  1050. smalltalk.method({
  1051. selector: "variable:",
  1052. fn: function (aScopeVariable) {
  1053. var self=this;
  1054. (self['@variable']=aScopeVariable);
  1055. return self;}
  1056. }),
  1057. smalltalk.IRVariable);
  1058. smalltalk.addClass('IRVerbatim', smalltalk.IRInstruction, ['source'], 'Compiler-IR');
  1059. smalltalk.addMethod(
  1060. "_accept_",
  1061. smalltalk.method({
  1062. selector: "accept:",
  1063. fn: function (aVisitor) {
  1064. var self=this;
  1065. smalltalk.send(aVisitor, "_visitIRVerbatim_", [self]);
  1066. return self;}
  1067. }),
  1068. smalltalk.IRVerbatim);
  1069. smalltalk.addMethod(
  1070. "_emitOn_",
  1071. smalltalk.method({
  1072. selector: "emitOn:",
  1073. fn: function (aStream) {
  1074. var self=this;
  1075. smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send(smalltalk.send(self, "_source", []), "__comma", [";"])]);
  1076. return self;}
  1077. }),
  1078. smalltalk.IRVerbatim);
  1079. smalltalk.addMethod(
  1080. "_source",
  1081. smalltalk.method({
  1082. selector: "source",
  1083. fn: function () {
  1084. var self=this;
  1085. return self['@source'];
  1086. return self;}
  1087. }),
  1088. smalltalk.IRVerbatim);
  1089. smalltalk.addMethod(
  1090. "_source_",
  1091. smalltalk.method({
  1092. selector: "source:",
  1093. fn: function (aString) {
  1094. var self=this;
  1095. (self['@source']=aString);
  1096. return self;}
  1097. }),
  1098. smalltalk.IRVerbatim);
  1099. smalltalk.addClass('IRVisitor', smalltalk.Object, [], 'Compiler-IR');
  1100. smalltalk.addMethod(
  1101. "_visit_",
  1102. smalltalk.method({
  1103. selector: "visit:",
  1104. fn: function (anIRInstruction) {
  1105. var self=this;
  1106. smalltalk.send(anIRInstruction, "_accept_", [self]);
  1107. return self;}
  1108. }),
  1109. smalltalk.IRVisitor);
  1110. smalltalk.addMethod(
  1111. "_visitIRAssignment_",
  1112. smalltalk.method({
  1113. selector: "visitIRAssignment:",
  1114. fn: function (anIRAssignment) {
  1115. var self=this;
  1116. smalltalk.send(self, "_visitIRInstruction_", [anIRAssignment]);
  1117. return self;}
  1118. }),
  1119. smalltalk.IRVisitor);
  1120. smalltalk.addMethod(
  1121. "_visitIRClosure_",
  1122. smalltalk.method({
  1123. selector: "visitIRClosure:",
  1124. fn: function (anIRClosure) {
  1125. var self=this;
  1126. smalltalk.send(self, "_visitIRInstruction_", [anIRClosure]);
  1127. return self;}
  1128. }),
  1129. smalltalk.IRVisitor);
  1130. smalltalk.addMethod(
  1131. "_visitIRInstruction_",
  1132. smalltalk.method({
  1133. selector: "visitIRInstruction:",
  1134. fn: function (anIRInstruction) {
  1135. var self=this;
  1136. smalltalk.send(smalltalk.send(anIRInstruction, "_instructions", []), "_do_", [(function(each){return smalltalk.send(self, "_visit_", [each]);})]);
  1137. return self;}
  1138. }),
  1139. smalltalk.IRVisitor);
  1140. smalltalk.addMethod(
  1141. "_visitIRMethod_",
  1142. smalltalk.method({
  1143. selector: "visitIRMethod:",
  1144. fn: function (anIRMethod) {
  1145. var self=this;
  1146. smalltalk.send(self, "_visitIRInstruction_", [anIRMethod]);
  1147. return self;}
  1148. }),
  1149. smalltalk.IRVisitor);
  1150. smalltalk.addMethod(
  1151. "_visitIRNonLocalReturn_",
  1152. smalltalk.method({
  1153. selector: "visitIRNonLocalReturn:",
  1154. fn: function (anIRNonLocalReturn) {
  1155. var self=this;
  1156. smalltalk.send(self, "_visitIRInstruction_", [anIRNonLocalReturn]);
  1157. return self;}
  1158. }),
  1159. smalltalk.IRVisitor);
  1160. smalltalk.addMethod(
  1161. "_visitIRNonLocalReturnHandling_",
  1162. smalltalk.method({
  1163. selector: "visitIRNonLocalReturnHandling:",
  1164. fn: function (anIRNonLocalReturnHandling) {
  1165. var self=this;
  1166. smalltalk.send(self, "_visitIRInstruction_", [anIRNonLocalReturnHandling]);
  1167. return self;}
  1168. }),
  1169. smalltalk.IRVisitor);
  1170. smalltalk.addMethod(
  1171. "_visitIRReturn_",
  1172. smalltalk.method({
  1173. selector: "visitIRReturn:",
  1174. fn: function (anIRReturn) {
  1175. var self=this;
  1176. smalltalk.send(self, "_visitIRInstruction_", [anIRReturn]);
  1177. return self;}
  1178. }),
  1179. smalltalk.IRVisitor);
  1180. smalltalk.addMethod(
  1181. "_visitIRSend_",
  1182. smalltalk.method({
  1183. selector: "visitIRSend:",
  1184. fn: function (anIRSend) {
  1185. var self=this;
  1186. smalltalk.send(self, "_visitIRInstruction_", [anIRSend]);
  1187. return self;}
  1188. }),
  1189. smalltalk.IRVisitor);
  1190. smalltalk.addMethod(
  1191. "_visitIRSequence_",
  1192. smalltalk.method({
  1193. selector: "visitIRSequence:",
  1194. fn: function (anIRSequence) {
  1195. var self=this;
  1196. smalltalk.send(self, "_visitIRInstruction_", [anIRSequence]);
  1197. return self;}
  1198. }),
  1199. smalltalk.IRVisitor);
  1200. smalltalk.addMethod(
  1201. "_visitIRStatement_",
  1202. smalltalk.method({
  1203. selector: "visitIRStatement:",
  1204. fn: function (anIRStatement) {
  1205. var self=this;
  1206. smalltalk.send(self, "_visitIRInstruction_", [anIRStatement]);
  1207. return self;}
  1208. }),
  1209. smalltalk.IRVisitor);
  1210. smalltalk.addMethod(
  1211. "_visitIRTempDeclaration_",
  1212. smalltalk.method({
  1213. selector: "visitIRTempDeclaration:",
  1214. fn: function (anIRTempDeclaration) {
  1215. var self=this;
  1216. smalltalk.send(self, "_visitIRInstruction_", [anIRTempDeclaration]);
  1217. return self;}
  1218. }),
  1219. smalltalk.IRVisitor);
  1220. smalltalk.addMethod(
  1221. "_visitIRValue_",
  1222. smalltalk.method({
  1223. selector: "visitIRValue:",
  1224. fn: function (anIRValue) {
  1225. var self=this;
  1226. smalltalk.send(self, "_visitIRInstruction_", [anIRValue]);
  1227. return self;}
  1228. }),
  1229. smalltalk.IRVisitor);
  1230. smalltalk.addMethod(
  1231. "_visitIRVariable_",
  1232. smalltalk.method({
  1233. selector: "visitIRVariable:",
  1234. fn: function (anIRVariable) {
  1235. var self=this;
  1236. smalltalk.send(self, "_visitIRInstruction_", [anIRVariable]);
  1237. return self;}
  1238. }),
  1239. smalltalk.IRVisitor);
  1240. smalltalk.addMethod(
  1241. "_visitIRVerbatim_",
  1242. smalltalk.method({
  1243. selector: "visitIRVerbatim:",
  1244. fn: function (anIRVerbatim) {
  1245. var self=this;
  1246. smalltalk.send(self, "_visitIRInstruction_", [anIRVerbatim]);
  1247. return self;}
  1248. }),
  1249. smalltalk.IRVisitor);
  1250. smalltalk.addClass('JSStream', smalltalk.Object, ['stream'], 'Compiler-IR');
  1251. smalltalk.addMethod(
  1252. "_contents",
  1253. smalltalk.method({
  1254. selector: "contents",
  1255. fn: function () {
  1256. var self=this;
  1257. return smalltalk.send(self['@stream'], "_contents", []);
  1258. return self;}
  1259. }),
  1260. smalltalk.JSStream);
  1261. smalltalk.addMethod(
  1262. "_initialize",
  1263. smalltalk.method({
  1264. selector: "initialize",
  1265. fn: function () {
  1266. var self=this;
  1267. smalltalk.send(self, "_initialize", [], smalltalk.JSStream.superclass || nil);
  1268. (self['@stream']=smalltalk.send("", "_writeStream", []));
  1269. return self;}
  1270. }),
  1271. smalltalk.JSStream);
  1272. smalltalk.addMethod(
  1273. "_lf",
  1274. smalltalk.method({
  1275. selector: "lf",
  1276. fn: function () {
  1277. var self=this;
  1278. smalltalk.send(self['@stream'], "_lf", []);
  1279. return self;}
  1280. }),
  1281. smalltalk.JSStream);
  1282. smalltalk.addMethod(
  1283. "_nextPut_",
  1284. smalltalk.method({
  1285. selector: "nextPut:",
  1286. fn: function (aString) {
  1287. var self=this;
  1288. smalltalk.send(self['@stream'], "_nextPut_", [aString]);
  1289. return self;}
  1290. }),
  1291. smalltalk.JSStream);
  1292. smalltalk.addMethod(
  1293. "_nextPutAll_",
  1294. smalltalk.method({
  1295. selector: "nextPutAll:",
  1296. fn: function (aString) {
  1297. var self=this;
  1298. smalltalk.send(self['@stream'], "_nextPutAll_", [aString]);
  1299. return self;}
  1300. }),
  1301. smalltalk.JSStream);
  1302. smalltalk.addMethod(
  1303. "_nextPutAssignment_to_",
  1304. smalltalk.method({
  1305. selector: "nextPutAssignment:to:",
  1306. fn: function (varInstruction, valueInstruction) {
  1307. var self=this;
  1308. smalltalk.send(varInstruction, "_emitOn_", [self]);
  1309. smalltalk.send(self['@stream'], "_nextPutAll_", ["="]);
  1310. smalltalk.send(valueInstruction, "_emitOn_", [self]);
  1311. return self;}
  1312. }),
  1313. smalltalk.JSStream);
  1314. smalltalk.addMethod(
  1315. "_nextPutClosureWith_arguments_",
  1316. smalltalk.method({
  1317. selector: "nextPutClosureWith:arguments:",
  1318. fn: function (aBlock, anArray) {
  1319. var self=this;
  1320. smalltalk.send(self['@stream'], "_nextPutAll_", ["(function("]);
  1321. smalltalk.send(anArray, "_do_separatedBy_", [(function(each){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(each, "_asVariableName", [])]);}), (function(){return smalltalk.send(self['@stream'], "_nextPut_", [","]);})]);
  1322. (function($rec){smalltalk.send($rec, "_nextPutAll_", ["){"]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1323. smalltalk.send(aBlock, "_value", []);
  1324. smalltalk.send(self['@stream'], "_nextPutAll_", ["})"]);
  1325. return self;}
  1326. }),
  1327. smalltalk.JSStream);
  1328. smalltalk.addMethod(
  1329. "_nextPutFunctionWith_arguments_",
  1330. smalltalk.method({
  1331. selector: "nextPutFunctionWith:arguments:",
  1332. fn: function (aBlock, anArray) {
  1333. var self=this;
  1334. smalltalk.send(self['@stream'], "_nextPutAll_", ["fn: function("]);
  1335. smalltalk.send(anArray, "_do_separatedBy_", [(function(each){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(each, "_asVariableName", [])]);}), (function(){return smalltalk.send(self['@stream'], "_nextPut_", [","]);})]);
  1336. (function($rec){smalltalk.send($rec, "_nextPutAll_", ["){"]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1337. smalltalk.send(self, "_nextPutVar_", ["$return"]);
  1338. (function($rec){smalltalk.send($rec, "_nextPutAll_", ["var self=this;"]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1339. smalltalk.send(aBlock, "_value", []);
  1340. smalltalk.send(self['@stream'], "_nextPutAll_", ["return $return || self;}"]);
  1341. return self;}
  1342. }),
  1343. smalltalk.JSStream);
  1344. smalltalk.addMethod(
  1345. "_nextPutMethodDeclaration_with_",
  1346. smalltalk.method({
  1347. selector: "nextPutMethodDeclaration:with:",
  1348. fn: function (aMethod, aBlock) {
  1349. var self=this;
  1350. (function($rec){smalltalk.send($rec, "_nextPutAll_", ["smalltalk.method({"]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("selector: \x22", "__comma", [smalltalk.send(aMethod, "_selector", [])]), "__comma", ["\x22,"])]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("source: ", "__comma", [smalltalk.send(smalltalk.send(aMethod, "_source", []), "_asJavascript", [])]), "__comma", [","])]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1351. smalltalk.send(aBlock, "_value", []);
  1352. (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(",", "__comma", [smalltalk.send((smalltalk.String || String), "_lf", [])]), "__comma", ["messageSends: "])]);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aMethod, "_messageSends", []), "_asArray", []), "_asJavascript", []), "__comma", [","])]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("args: ", "__comma", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aMethod, "_arguments", []), "_collect_", [(function(each){return smalltalk.send(each, "_value", []);})]), "_asArray", []), "_asJavascript", [])]), "__comma", [","])]);smalltalk.send($rec, "_lf", []);return smalltalk.send($rec, "_nextPutAll_", ["referencedClasses: ["]);})(self['@stream']);
  1353. smalltalk.send(smalltalk.send(aMethod, "_classReferences", []), "_do_separatedBy_", [(function(each){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(each, "_asJavascript", [])]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [","]);})]);
  1354. (function($rec){smalltalk.send($rec, "_nextPutAll_", ["]"]);return smalltalk.send($rec, "_nextPutAll_", ["})"]);})(self['@stream']);
  1355. return self;}
  1356. }),
  1357. smalltalk.JSStream);
  1358. smalltalk.addMethod(
  1359. "_nextPutNonLocalReturnHandlingWith_",
  1360. smalltalk.method({
  1361. selector: "nextPutNonLocalReturnHandlingWith:",
  1362. fn: function (aBlock) {
  1363. var self=this;
  1364. (function($rec){smalltalk.send($rec, "_nextPutAll_", ["var $early={};"]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", ["try {"]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1365. smalltalk.send(aBlock, "_value", []);
  1366. (function($rec){smalltalk.send($rec, "_nextPutAll_", ["}"]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", ["catch(e) {if(e===$early)return e[0]; throw e}"]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1367. return self;}
  1368. }),
  1369. smalltalk.JSStream);
  1370. smalltalk.addMethod(
  1371. "_nextPutNonLocalReturnWith_",
  1372. smalltalk.method({
  1373. selector: "nextPutNonLocalReturnWith:",
  1374. fn: function (aBlock) {
  1375. var self=this;
  1376. smalltalk.send(self['@stream'], "_nextPutAll_", ["(function(){throw $early=["]);
  1377. smalltalk.send(aBlock, "_value", []);
  1378. smalltalk.send(self['@stream'], "_nextPutAll_", ["]})()"]);
  1379. return self;}
  1380. }),
  1381. smalltalk.JSStream);
  1382. smalltalk.addMethod(
  1383. "_nextPutReturnWith_",
  1384. smalltalk.method({
  1385. selector: "nextPutReturnWith:",
  1386. fn: function (aBlock) {
  1387. var self=this;
  1388. smalltalk.send(self['@stream'], "_nextPutAll_", ["$return="]);
  1389. smalltalk.send(aBlock, "_value", []);
  1390. return self;}
  1391. }),
  1392. smalltalk.JSStream);
  1393. smalltalk.addMethod(
  1394. "_nextPutSendTo_selector_arguments_",
  1395. smalltalk.method({
  1396. selector: "nextPutSendTo:selector:arguments:",
  1397. fn: function (receiver, selector, arguments) {
  1398. var self=this;
  1399. smalltalk.send(self['@stream'], "_nextPutAll_", ["smalltalk.send("]);
  1400. smalltalk.send(receiver, "_emitOn_", [self]);
  1401. smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(",\x22", "__comma", [smalltalk.send(selector, "_asSelector", [])]), "__comma", ["\x22,["])]);
  1402. smalltalk.send(arguments, "_do_separatedBy_", [(function(each){return smalltalk.send(each, "_emitOn_", [self]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [","]);})]);
  1403. smalltalk.send(self['@stream'], "_nextPutAll_", ["])"]);
  1404. return self;}
  1405. }),
  1406. smalltalk.JSStream);
  1407. smalltalk.addMethod(
  1408. "_nextPutSequenceWith_",
  1409. smalltalk.method({
  1410. selector: "nextPutSequenceWith:",
  1411. fn: function (aBlock) {
  1412. var self=this;
  1413. smalltalk.send(aBlock, "_value", []);
  1414. return self;}
  1415. }),
  1416. smalltalk.JSStream);
  1417. smalltalk.addMethod(
  1418. "_nextPutStatement_with_",
  1419. smalltalk.method({
  1420. selector: "nextPutStatement:with:",
  1421. fn: function (anInteger, aBlock) {
  1422. var self=this;
  1423. smalltalk.send(aBlock, "_value", []);
  1424. (function($rec){smalltalk.send($rec, "_nextPutAll_", [";"]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1425. return self;}
  1426. }),
  1427. smalltalk.JSStream);
  1428. smalltalk.addMethod(
  1429. "_nextPutVar_",
  1430. smalltalk.method({
  1431. selector: "nextPutVar:",
  1432. fn: function (aString) {
  1433. var self=this;
  1434. (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("var ", "__comma", [aString]), "__comma", [";"])]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1435. return self;}
  1436. }),
  1437. smalltalk.JSStream);
  1438. smalltalk.addMethod(
  1439. "_nextPutVars_",
  1440. smalltalk.method({
  1441. selector: "nextPutVars:",
  1442. fn: function (aCollection) {
  1443. var self=this;
  1444. smalltalk.send(self['@stream'], "_nextPutAll_", ["var "]);
  1445. smalltalk.send(aCollection, "_do_separatedBy_", [(function(each){return smalltalk.send(self['@stream'], "_nextPutAll_", [each]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [","]);})]);
  1446. (function($rec){smalltalk.send($rec, "_nextPutAll_", [";"]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1447. return self;}
  1448. }),
  1449. smalltalk.JSStream);
  1450. smalltalk.addMethod(
  1451. "_appendToInstruction_",
  1452. smalltalk.method({
  1453. selector: "appendToInstruction:",
  1454. fn: function (anIRInstruction) {
  1455. var self=this;
  1456. smalltalk.send(anIRInstruction, "_appendBlock_", [self]);
  1457. return self;}
  1458. }),
  1459. smalltalk.BlockClosure);
  1460. smalltalk.addMethod(
  1461. "_appendToInstruction_",
  1462. smalltalk.method({
  1463. selector: "appendToInstruction:",
  1464. fn: function (anInstruction) {
  1465. var self=this;
  1466. smalltalk.send(anInstruction, "_appendString_", [self]);
  1467. return self;}
  1468. }),
  1469. smalltalk.String);
  1470. smalltalk.addMethod(
  1471. "_asVariableName",
  1472. smalltalk.method({
  1473. selector: "asVariableName",
  1474. fn: function () {
  1475. var self=this;
  1476. return ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk), "_current", []), "_reservedWords", []), "_includes_", [self])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(self, "__comma", ["_"]);})() : (function(){return self;})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "__comma", ["_"]);}), (function(){return self;})]));
  1477. return self;}
  1478. }),
  1479. smalltalk.String);
  1480. smalltalk.addMethod(
  1481. "_emitOn_",
  1482. smalltalk.method({
  1483. selector: "emitOn:",
  1484. fn: function (aStream) {
  1485. var self=this;
  1486. smalltalk.send(aStream, "_nextPutAll_", [self]);
  1487. return self;}
  1488. }),
  1489. smalltalk.String);