1
0

Compiler-IR.deploy.js 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347
  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_", [smalltalk.send(smalltalk.send((smalltalk.AliasVar || AliasVar), "_new", []), "_name_", [alias])]);})]);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_", [smalltalk.send(smalltalk.send((smalltalk.AliasVar || AliasVar), "_new", []), "_name_", [alias])]);})]);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_", [smalltalk.send(smalltalk.send((smalltalk.AliasVar || AliasVar), "_new", []), "_name_", [smalltalk.send(aNode, "_alias", [])])]);
  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. "_append_",
  429. smalltalk.method({
  430. selector: "append:",
  431. fn: function (anObject) {
  432. var self=this;
  433. smalltalk.send(anObject, "_appendToInstruction_", [self]);
  434. return anObject;
  435. return self;}
  436. }),
  437. smalltalk.IRInstruction);
  438. smalltalk.addMethod(
  439. "_appendBlock_",
  440. smalltalk.method({
  441. selector: "appendBlock:",
  442. fn: function (aBlock) {
  443. var self=this;
  444. var root=nil;
  445. (root=smalltalk.send(smalltalk.send(self, "_builder", []), "_root", []));
  446. smalltalk.send(smalltalk.send(self, "_builder", []), "_root_", [self]);
  447. smalltalk.send(aBlock, "_value", []);
  448. smalltalk.send(smalltalk.send(self, "_builder", []), "_root_", [root]);
  449. return self;}
  450. }),
  451. smalltalk.IRInstruction);
  452. smalltalk.addMethod(
  453. "_appendInstruction_",
  454. smalltalk.method({
  455. selector: "appendInstruction:",
  456. fn: function (anIRInstruction) {
  457. var self=this;
  458. smalltalk.send(smalltalk.send(self, "_instructions", []), "_add_", [anIRInstruction]);
  459. return self;}
  460. }),
  461. smalltalk.IRInstruction);
  462. smalltalk.addMethod(
  463. "_appendString_",
  464. smalltalk.method({
  465. selector: "appendString:",
  466. fn: function (aString) {
  467. var self=this;
  468. smalltalk.send(self, "_append_", [smalltalk.send(smalltalk.send(self, "_builder", []), "_value_", [aString])]);
  469. return self;}
  470. }),
  471. smalltalk.IRInstruction);
  472. smalltalk.addMethod(
  473. "_appendToInstruction_",
  474. smalltalk.method({
  475. selector: "appendToInstruction:",
  476. fn: function (anIRInstruction) {
  477. var self=this;
  478. smalltalk.send(anIRInstruction, "_appendInstruction_", [self]);
  479. return self;}
  480. }),
  481. smalltalk.IRInstruction);
  482. smalltalk.addMethod(
  483. "_builder",
  484. smalltalk.method({
  485. selector: "builder",
  486. fn: function () {
  487. var self=this;
  488. return self['@builder'];
  489. return self;}
  490. }),
  491. smalltalk.IRInstruction);
  492. smalltalk.addMethod(
  493. "_builder_",
  494. smalltalk.method({
  495. selector: "builder:",
  496. fn: function (aBuilder) {
  497. var self=this;
  498. (self['@builder']=aBuilder);
  499. return self;}
  500. }),
  501. smalltalk.IRInstruction);
  502. smalltalk.addMethod(
  503. "_emitOn_",
  504. smalltalk.method({
  505. selector: "emitOn:",
  506. fn: function (aStream) {
  507. var self=this;
  508. smalltalk.send(smalltalk.send(self, "_instructions", []), "_do_", [(function(each){return smalltalk.send(each, "_emitOn_", [aStream]);})]);
  509. return self;}
  510. }),
  511. smalltalk.IRInstruction);
  512. smalltalk.addMethod(
  513. "_instructions",
  514. smalltalk.method({
  515. selector: "instructions",
  516. fn: function () {
  517. var self=this;
  518. return (($receiver = self['@instructions']) == nil || $receiver == undefined) ? (function(){return (self['@instructions']=smalltalk.send((smalltalk.OrderedCollection || OrderedCollection), "_new", []));})() : $receiver;
  519. return self;}
  520. }),
  521. smalltalk.IRInstruction);
  522. smalltalk.addMethod(
  523. "_with_",
  524. smalltalk.method({
  525. selector: "with:",
  526. fn: function (anObject) {
  527. var self=this;
  528. smalltalk.send(anObject, "_appendToInstruction_", [self]);
  529. return self;}
  530. }),
  531. smalltalk.IRInstruction);
  532. smalltalk.addMethod(
  533. "_on_",
  534. smalltalk.method({
  535. selector: "on:",
  536. fn: function (aBuilder) {
  537. var self=this;
  538. return (function($rec){smalltalk.send($rec, "_builder_", [aBuilder]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", []));
  539. return self;}
  540. }),
  541. smalltalk.IRInstruction.klass);
  542. smalltalk.addClass('IRAssignment', smalltalk.IRInstruction, ['left', 'right'], 'Compiler-IR');
  543. smalltalk.addMethod(
  544. "_emitOn_",
  545. smalltalk.method({
  546. selector: "emitOn:",
  547. fn: function (aStream) {
  548. var self=this;
  549. smalltalk.send(aStream, "_nextPutAssignment_to_", [smalltalk.send(smalltalk.send(self, "_instructions", []), "_first", []), smalltalk.send(smalltalk.send(self, "_instructions", []), "_last", [])]);
  550. return self;}
  551. }),
  552. smalltalk.IRAssignment);
  553. smalltalk.addClass('IRClosure', smalltalk.IRInstruction, ['arguments'], 'Compiler-IR');
  554. smalltalk.addMethod(
  555. "_arguments",
  556. smalltalk.method({
  557. selector: "arguments",
  558. fn: function () {
  559. var self=this;
  560. return self['@arguments'];
  561. return self;}
  562. }),
  563. smalltalk.IRClosure);
  564. smalltalk.addMethod(
  565. "_arguments_",
  566. smalltalk.method({
  567. selector: "arguments:",
  568. fn: function (aCollection) {
  569. var self=this;
  570. (self['@arguments']=aCollection);
  571. return self;}
  572. }),
  573. smalltalk.IRClosure);
  574. smalltalk.addMethod(
  575. "_emitOn_",
  576. smalltalk.method({
  577. selector: "emitOn:",
  578. fn: function (aStream) {
  579. var self=this;
  580. smalltalk.send(aStream, "_nextPutClosureWith_arguments_", [(function(){return smalltalk.send(self, "_emitOn_", [aStream], smalltalk.IRClosure.superclass || nil);}), smalltalk.send(self, "_arguments", [])]);
  581. return self;}
  582. }),
  583. smalltalk.IRClosure);
  584. smalltalk.addClass('IRMethod', smalltalk.IRInstruction, ['source', 'selector', 'classReferences', 'messageSends', 'arguments', 'internalVariables', 'source'], 'Compiler-IR');
  585. smalltalk.addMethod(
  586. "_arguments",
  587. smalltalk.method({
  588. selector: "arguments",
  589. fn: function () {
  590. var self=this;
  591. return self['@arguments'];
  592. return self;}
  593. }),
  594. smalltalk.IRMethod);
  595. smalltalk.addMethod(
  596. "_arguments_",
  597. smalltalk.method({
  598. selector: "arguments:",
  599. fn: function (aCollection) {
  600. var self=this;
  601. (self['@arguments']=aCollection);
  602. return self;}
  603. }),
  604. smalltalk.IRMethod);
  605. smalltalk.addMethod(
  606. "_classReferences",
  607. smalltalk.method({
  608. selector: "classReferences",
  609. fn: function () {
  610. var self=this;
  611. return self['@classReferences'];
  612. return self;}
  613. }),
  614. smalltalk.IRMethod);
  615. smalltalk.addMethod(
  616. "_classReferences_",
  617. smalltalk.method({
  618. selector: "classReferences:",
  619. fn: function (aCollection) {
  620. var self=this;
  621. (self['@classReferences']=aCollection);
  622. return self;}
  623. }),
  624. smalltalk.IRMethod);
  625. smalltalk.addMethod(
  626. "_emitOn_",
  627. smalltalk.method({
  628. selector: "emitOn:",
  629. fn: function (aStream) {
  630. var self=this;
  631. 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", [])]);})]);
  632. return self;}
  633. }),
  634. smalltalk.IRMethod);
  635. smalltalk.addMethod(
  636. "_internalVariables",
  637. smalltalk.method({
  638. selector: "internalVariables",
  639. fn: function () {
  640. var self=this;
  641. return (($receiver = self['@internalVariables']) == nil || $receiver == undefined) ? (function(){return (self['@internalVariables']=smalltalk.send((smalltalk.Set || Set), "_new", []));})() : $receiver;
  642. return self;}
  643. }),
  644. smalltalk.IRMethod);
  645. smalltalk.addMethod(
  646. "_messageSends",
  647. smalltalk.method({
  648. selector: "messageSends",
  649. fn: function () {
  650. var self=this;
  651. return self['@messageSends'];
  652. return self;}
  653. }),
  654. smalltalk.IRMethod);
  655. smalltalk.addMethod(
  656. "_messageSends_",
  657. smalltalk.method({
  658. selector: "messageSends:",
  659. fn: function (aCollection) {
  660. var self=this;
  661. (self['@messageSends']=aCollection);
  662. return self;}
  663. }),
  664. smalltalk.IRMethod);
  665. smalltalk.addMethod(
  666. "_selector",
  667. smalltalk.method({
  668. selector: "selector",
  669. fn: function () {
  670. var self=this;
  671. return self['@selector'];
  672. return self;}
  673. }),
  674. smalltalk.IRMethod);
  675. smalltalk.addMethod(
  676. "_selector_",
  677. smalltalk.method({
  678. selector: "selector:",
  679. fn: function (aString) {
  680. var self=this;
  681. (self['@selector']=aString);
  682. return self;}
  683. }),
  684. smalltalk.IRMethod);
  685. smalltalk.addMethod(
  686. "_source",
  687. smalltalk.method({
  688. selector: "source",
  689. fn: function () {
  690. var self=this;
  691. return self['@source'];
  692. return self;}
  693. }),
  694. smalltalk.IRMethod);
  695. smalltalk.addMethod(
  696. "_source_",
  697. smalltalk.method({
  698. selector: "source:",
  699. fn: function (aString) {
  700. var self=this;
  701. (self['@source']=aString);
  702. return self;}
  703. }),
  704. smalltalk.IRMethod);
  705. smalltalk.addClass('IRNonLocalReturn', smalltalk.IRInstruction, [], 'Compiler-IR');
  706. smalltalk.addMethod(
  707. "_emitOn_",
  708. smalltalk.method({
  709. selector: "emitOn:",
  710. fn: function (aStream) {
  711. var self=this;
  712. smalltalk.send(aStream, "_nextPutNonLocalReturnWith_", [(function(){return smalltalk.send(self, "_emitOn_", [aStream], smalltalk.IRNonLocalReturn.superclass || nil);})]);
  713. return self;}
  714. }),
  715. smalltalk.IRNonLocalReturn);
  716. smalltalk.addClass('IRNonLocalReturnHandling', smalltalk.IRInstruction, [], 'Compiler-IR');
  717. smalltalk.addMethod(
  718. "_emitOn_",
  719. smalltalk.method({
  720. selector: "emitOn:",
  721. fn: function (aStream) {
  722. var self=this;
  723. smalltalk.send(aStream, "_nextPutNonLocalReturnHandlingWith_", [(function(){return smalltalk.send(self, "_emitOn_", [aStream], smalltalk.IRNonLocalReturnHandling.superclass || nil);})]);
  724. return self;}
  725. }),
  726. smalltalk.IRNonLocalReturnHandling);
  727. smalltalk.addClass('IRReturn', smalltalk.IRInstruction, [], 'Compiler-IR');
  728. smalltalk.addMethod(
  729. "_emitOn_",
  730. smalltalk.method({
  731. selector: "emitOn:",
  732. fn: function (aStream) {
  733. var self=this;
  734. smalltalk.send(aStream, "_nextPutReturnWith_", [(function(){return smalltalk.send(self, "_emitOn_", [aStream], smalltalk.IRReturn.superclass || nil);})]);
  735. return self;}
  736. }),
  737. smalltalk.IRReturn);
  738. smalltalk.addClass('IRSend', smalltalk.IRInstruction, ['selector', 'superSend'], 'Compiler-IR');
  739. smalltalk.addMethod(
  740. "_emitOn_",
  741. smalltalk.method({
  742. selector: "emitOn:",
  743. fn: function (aStream) {
  744. var self=this;
  745. smalltalk.send(aStream, "_nextPutAll_", ["smalltalk.send("]);
  746. smalltalk.send(smalltalk.send(smalltalk.send(self, "_instructions", []), "_first", []), "_emitOn_", [aStream]);
  747. smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send(smalltalk.send(",\x22", "__comma", [smalltalk.send(smalltalk.send(self, "_selector", []), "_asSelector", [])]), "__comma", ["\x22, ["])]);
  748. 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_", [","]);})]);
  749. smalltalk.send(aStream, "_nextPutAll_", ["])"]);
  750. return self;}
  751. }),
  752. smalltalk.IRSend);
  753. smalltalk.addMethod(
  754. "_selector",
  755. smalltalk.method({
  756. selector: "selector",
  757. fn: function () {
  758. var self=this;
  759. return self['@selector'];
  760. return self;}
  761. }),
  762. smalltalk.IRSend);
  763. smalltalk.addMethod(
  764. "_selector_",
  765. smalltalk.method({
  766. selector: "selector:",
  767. fn: function (aString) {
  768. var self=this;
  769. (self['@selector']=aString);
  770. return self;}
  771. }),
  772. smalltalk.IRSend);
  773. smalltalk.addMethod(
  774. "_superSend",
  775. smalltalk.method({
  776. selector: "superSend",
  777. fn: function () {
  778. var self=this;
  779. return (($receiver = self['@superSend']) == nil || $receiver == undefined) ? (function(){return false;})() : $receiver;
  780. return self;}
  781. }),
  782. smalltalk.IRSend);
  783. smalltalk.addMethod(
  784. "_superSend_",
  785. smalltalk.method({
  786. selector: "superSend:",
  787. fn: function (aBoolean) {
  788. var self=this;
  789. (self['@superSend']=aBoolean);
  790. return self;}
  791. }),
  792. smalltalk.IRSend);
  793. smalltalk.addClass('IRSequence', smalltalk.IRInstruction, [], 'Compiler-IR');
  794. smalltalk.addMethod(
  795. "_appendInstruction_",
  796. smalltalk.method({
  797. selector: "appendInstruction:",
  798. fn: function (anIRInstruction) {
  799. var self=this;
  800. smalltalk.send(smalltalk.send(self, "_instructions", []), "_add_", [smalltalk.send(smalltalk.send((smalltalk.IRStatement || IRStatement), "_on_", [smalltalk.send(self, "_builder", [])]), "_with_", [anIRInstruction])]);
  801. return self;}
  802. }),
  803. smalltalk.IRSequence);
  804. smalltalk.addMethod(
  805. "_emitOn_",
  806. smalltalk.method({
  807. selector: "emitOn:",
  808. fn: function (aStream) {
  809. var self=this;
  810. smalltalk.send(aStream, "_nextPutSequenceWith_", [(function(){return smalltalk.send(self, "_emitOn_", [aStream], smalltalk.IRSequence.superclass || nil);})]);
  811. return self;}
  812. }),
  813. smalltalk.IRSequence);
  814. smalltalk.addClass('IRStatement', smalltalk.IRInstruction, ['pc'], 'Compiler-IR');
  815. smalltalk.addMethod(
  816. "_emitOn_",
  817. smalltalk.method({
  818. selector: "emitOn:",
  819. fn: function (aStream) {
  820. var self=this;
  821. smalltalk.send(aStream, "_nextPutStatement_with_", [smalltalk.send(self, "_pc", []), (function(){return smalltalk.send(self, "_emitOn_", [aStream], smalltalk.IRStatement.superclass || nil);})]);
  822. return self;}
  823. }),
  824. smalltalk.IRStatement);
  825. smalltalk.addMethod(
  826. "_pc",
  827. smalltalk.method({
  828. selector: "pc",
  829. fn: function () {
  830. var self=this;
  831. return (($receiver = self['@pc']) == nil || $receiver == undefined) ? (function(){return (self['@pc']=smalltalk.send(smalltalk.send(self, "_builder", []), "_nextPc", []));})() : $receiver;
  832. return self;}
  833. }),
  834. smalltalk.IRStatement);
  835. smalltalk.addClass('IRTempDeclaration', smalltalk.IRInstruction, ['name'], 'Compiler-IR');
  836. smalltalk.addMethod(
  837. "_emitOn_",
  838. smalltalk.method({
  839. selector: "emitOn:",
  840. fn: function (aStream) {
  841. var self=this;
  842. smalltalk.send(aStream, "_nextPutVar_", [smalltalk.send(smalltalk.send(self, "_name", []), "_asVariableName", [])]);
  843. return self;}
  844. }),
  845. smalltalk.IRTempDeclaration);
  846. smalltalk.addMethod(
  847. "_name",
  848. smalltalk.method({
  849. selector: "name",
  850. fn: function () {
  851. var self=this;
  852. return self['@name'];
  853. return self;}
  854. }),
  855. smalltalk.IRTempDeclaration);
  856. smalltalk.addMethod(
  857. "_name_",
  858. smalltalk.method({
  859. selector: "name:",
  860. fn: function (aString) {
  861. var self=this;
  862. (self['@name']=aString);
  863. return self;}
  864. }),
  865. smalltalk.IRTempDeclaration);
  866. smalltalk.addClass('IRValue', smalltalk.IRInstruction, ['value'], 'Compiler-IR');
  867. smalltalk.addMethod(
  868. "_emitOn_",
  869. smalltalk.method({
  870. selector: "emitOn:",
  871. fn: function (aStream) {
  872. var self=this;
  873. smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send(smalltalk.send(self, "_value", []), "_asJavascript", [])]);
  874. return self;}
  875. }),
  876. smalltalk.IRValue);
  877. smalltalk.addMethod(
  878. "_value",
  879. smalltalk.method({
  880. selector: "value",
  881. fn: function () {
  882. var self=this;
  883. return self['@value'];
  884. return self;}
  885. }),
  886. smalltalk.IRValue);
  887. smalltalk.addMethod(
  888. "_value_",
  889. smalltalk.method({
  890. selector: "value:",
  891. fn: function (aString) {
  892. var self=this;
  893. (self['@value']=aString);
  894. return self;}
  895. }),
  896. smalltalk.IRValue);
  897. smalltalk.addClass('IRVariable', smalltalk.IRInstruction, ['variable'], 'Compiler-IR');
  898. smalltalk.addMethod(
  899. "_emitOn_",
  900. smalltalk.method({
  901. selector: "emitOn:",
  902. fn: function (aStream) {
  903. var self=this;
  904. smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send(smalltalk.send(self, "_variable", []), "_alias", [])]);
  905. return self;}
  906. }),
  907. smalltalk.IRVariable);
  908. smalltalk.addMethod(
  909. "_variable",
  910. smalltalk.method({
  911. selector: "variable",
  912. fn: function () {
  913. var self=this;
  914. return self['@variable'];
  915. return self;}
  916. }),
  917. smalltalk.IRVariable);
  918. smalltalk.addMethod(
  919. "_variable_",
  920. smalltalk.method({
  921. selector: "variable:",
  922. fn: function (aScopeVariable) {
  923. var self=this;
  924. (self['@variable']=aScopeVariable);
  925. return self;}
  926. }),
  927. smalltalk.IRVariable);
  928. smalltalk.addClass('IRVerbatim', smalltalk.IRInstruction, ['source'], 'Compiler-IR');
  929. smalltalk.addMethod(
  930. "_emitOn_",
  931. smalltalk.method({
  932. selector: "emitOn:",
  933. fn: function (aStream) {
  934. var self=this;
  935. smalltalk.send(aStream, "_nextPutAll_", [smalltalk.send(smalltalk.send(self, "_source", []), "__comma", [";"])]);
  936. return self;}
  937. }),
  938. smalltalk.IRVerbatim);
  939. smalltalk.addMethod(
  940. "_source",
  941. smalltalk.method({
  942. selector: "source",
  943. fn: function () {
  944. var self=this;
  945. return self['@source'];
  946. return self;}
  947. }),
  948. smalltalk.IRVerbatim);
  949. smalltalk.addMethod(
  950. "_source_",
  951. smalltalk.method({
  952. selector: "source:",
  953. fn: function (aString) {
  954. var self=this;
  955. (self['@source']=aString);
  956. return self;}
  957. }),
  958. smalltalk.IRVerbatim);
  959. smalltalk.addClass('JSStream', smalltalk.Object, ['stream'], 'Compiler-IR');
  960. smalltalk.addMethod(
  961. "_contents",
  962. smalltalk.method({
  963. selector: "contents",
  964. fn: function () {
  965. var self=this;
  966. return smalltalk.send(self['@stream'], "_contents", []);
  967. return self;}
  968. }),
  969. smalltalk.JSStream);
  970. smalltalk.addMethod(
  971. "_initialize",
  972. smalltalk.method({
  973. selector: "initialize",
  974. fn: function () {
  975. var self=this;
  976. smalltalk.send(self, "_initialize", [], smalltalk.JSStream.superclass || nil);
  977. (self['@stream']=smalltalk.send("", "_writeStream", []));
  978. return self;}
  979. }),
  980. smalltalk.JSStream);
  981. smalltalk.addMethod(
  982. "_lf",
  983. smalltalk.method({
  984. selector: "lf",
  985. fn: function () {
  986. var self=this;
  987. smalltalk.send(self['@stream'], "_lf", []);
  988. return self;}
  989. }),
  990. smalltalk.JSStream);
  991. smalltalk.addMethod(
  992. "_nextPut_",
  993. smalltalk.method({
  994. selector: "nextPut:",
  995. fn: function (aString) {
  996. var self=this;
  997. smalltalk.send(self['@stream'], "_nextPut_", [aString]);
  998. return self;}
  999. }),
  1000. smalltalk.JSStream);
  1001. smalltalk.addMethod(
  1002. "_nextPutAll_",
  1003. smalltalk.method({
  1004. selector: "nextPutAll:",
  1005. fn: function (aString) {
  1006. var self=this;
  1007. smalltalk.send(self['@stream'], "_nextPutAll_", [aString]);
  1008. return self;}
  1009. }),
  1010. smalltalk.JSStream);
  1011. smalltalk.addMethod(
  1012. "_nextPutAssignment_to_",
  1013. smalltalk.method({
  1014. selector: "nextPutAssignment:to:",
  1015. fn: function (varInstruction, valueInstruction) {
  1016. var self=this;
  1017. smalltalk.send(varInstruction, "_emitOn_", [self]);
  1018. smalltalk.send(self['@stream'], "_nextPutAll_", ["="]);
  1019. smalltalk.send(valueInstruction, "_emitOn_", [self]);
  1020. return self;}
  1021. }),
  1022. smalltalk.JSStream);
  1023. smalltalk.addMethod(
  1024. "_nextPutClosureWith_arguments_",
  1025. smalltalk.method({
  1026. selector: "nextPutClosureWith:arguments:",
  1027. fn: function (aBlock, anArray) {
  1028. var self=this;
  1029. smalltalk.send(self['@stream'], "_nextPutAll_", ["(function("]);
  1030. smalltalk.send(anArray, "_do_separatedBy_", [(function(each){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(each, "_asVariableName", [])]);}), (function(){return smalltalk.send(self['@stream'], "_nextPut_", [","]);})]);
  1031. (function($rec){smalltalk.send($rec, "_nextPutAll_", ["){"]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1032. smalltalk.send(aBlock, "_value", []);
  1033. smalltalk.send(self['@stream'], "_nextPutAll_", ["})"]);
  1034. return self;}
  1035. }),
  1036. smalltalk.JSStream);
  1037. smalltalk.addMethod(
  1038. "_nextPutFunctionWith_arguments_",
  1039. smalltalk.method({
  1040. selector: "nextPutFunctionWith:arguments:",
  1041. fn: function (aBlock, anArray) {
  1042. var self=this;
  1043. smalltalk.send(self['@stream'], "_nextPutAll_", ["fn: function("]);
  1044. smalltalk.send(anArray, "_do_separatedBy_", [(function(each){return smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(each, "_asVariableName", [])]);}), (function(){return smalltalk.send(self['@stream'], "_nextPut_", [","]);})]);
  1045. (function($rec){smalltalk.send($rec, "_nextPutAll_", ["){"]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1046. smalltalk.send(self, "_nextPutVar_", ["$return"]);
  1047. (function($rec){smalltalk.send($rec, "_nextPutAll_", ["var self=this;"]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1048. smalltalk.send(aBlock, "_value", []);
  1049. smalltalk.send(self['@stream'], "_nextPutAll_", ["return $return || self;}"]);
  1050. return self;}
  1051. }),
  1052. smalltalk.JSStream);
  1053. smalltalk.addMethod(
  1054. "_nextPutMethodDeclaration_with_",
  1055. smalltalk.method({
  1056. selector: "nextPutMethodDeclaration:with:",
  1057. fn: function (aMethod, aBlock) {
  1058. var self=this;
  1059. (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']);
  1060. smalltalk.send(aBlock, "_value", []);
  1061. (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']);
  1062. 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_", [","]);})]);
  1063. (function($rec){smalltalk.send($rec, "_nextPutAll_", ["]"]);return smalltalk.send($rec, "_nextPutAll_", ["})"]);})(self['@stream']);
  1064. return self;}
  1065. }),
  1066. smalltalk.JSStream);
  1067. smalltalk.addMethod(
  1068. "_nextPutNonLocalReturnHandlingWith_",
  1069. smalltalk.method({
  1070. selector: "nextPutNonLocalReturnHandlingWith:",
  1071. fn: function (aBlock) {
  1072. var self=this;
  1073. (function($rec){smalltalk.send($rec, "_nextPutAll_", ["var $early={};"]);smalltalk.send($rec, "_lf", []);smalltalk.send($rec, "_nextPutAll_", ["try {"]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1074. smalltalk.send(aBlock, "_value", []);
  1075. (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']);
  1076. return self;}
  1077. }),
  1078. smalltalk.JSStream);
  1079. smalltalk.addMethod(
  1080. "_nextPutNonLocalReturnWith_",
  1081. smalltalk.method({
  1082. selector: "nextPutNonLocalReturnWith:",
  1083. fn: function (aBlock) {
  1084. var self=this;
  1085. smalltalk.send(self['@stream'], "_nextPutAll_", ["(function(){throw $early=["]);
  1086. smalltalk.send(aBlock, "_value", []);
  1087. smalltalk.send(self['@stream'], "_nextPutAll_", ["]})()"]);
  1088. return self;}
  1089. }),
  1090. smalltalk.JSStream);
  1091. smalltalk.addMethod(
  1092. "_nextPutReturnWith_",
  1093. smalltalk.method({
  1094. selector: "nextPutReturnWith:",
  1095. fn: function (aBlock) {
  1096. var self=this;
  1097. smalltalk.send(self['@stream'], "_nextPutAll_", ["$return="]);
  1098. smalltalk.send(aBlock, "_value", []);
  1099. return self;}
  1100. }),
  1101. smalltalk.JSStream);
  1102. smalltalk.addMethod(
  1103. "_nextPutSendTo_selector_arguments_",
  1104. smalltalk.method({
  1105. selector: "nextPutSendTo:selector:arguments:",
  1106. fn: function (receiver, selector, arguments) {
  1107. var self=this;
  1108. smalltalk.send(self['@stream'], "_nextPutAll_", ["smalltalk.send("]);
  1109. smalltalk.send(receiver, "_emitOn_", [self]);
  1110. smalltalk.send(self['@stream'], "_nextPutAll_", [smalltalk.send(smalltalk.send(",\x22", "__comma", [smalltalk.send(selector, "_asSelector", [])]), "__comma", ["\x22,["])]);
  1111. smalltalk.send(arguments, "_do_separatedBy_", [(function(each){return smalltalk.send(each, "_emitOn_", [self]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [","]);})]);
  1112. smalltalk.send(self['@stream'], "_nextPutAll_", ["])"]);
  1113. return self;}
  1114. }),
  1115. smalltalk.JSStream);
  1116. smalltalk.addMethod(
  1117. "_nextPutSequenceWith_",
  1118. smalltalk.method({
  1119. selector: "nextPutSequenceWith:",
  1120. fn: function (aBlock) {
  1121. var self=this;
  1122. smalltalk.send(aBlock, "_value", []);
  1123. return self;}
  1124. }),
  1125. smalltalk.JSStream);
  1126. smalltalk.addMethod(
  1127. "_nextPutStatement_with_",
  1128. smalltalk.method({
  1129. selector: "nextPutStatement:with:",
  1130. fn: function (anInteger, aBlock) {
  1131. var self=this;
  1132. smalltalk.send(aBlock, "_value", []);
  1133. (function($rec){smalltalk.send($rec, "_nextPutAll_", [";"]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1134. return self;}
  1135. }),
  1136. smalltalk.JSStream);
  1137. smalltalk.addMethod(
  1138. "_nextPutVar_",
  1139. smalltalk.method({
  1140. selector: "nextPutVar:",
  1141. fn: function (aString) {
  1142. var self=this;
  1143. (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send("var ", "__comma", [aString]), "__comma", [";"])]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1144. return self;}
  1145. }),
  1146. smalltalk.JSStream);
  1147. smalltalk.addMethod(
  1148. "_nextPutVars_",
  1149. smalltalk.method({
  1150. selector: "nextPutVars:",
  1151. fn: function (aCollection) {
  1152. var self=this;
  1153. smalltalk.send(self['@stream'], "_nextPutAll_", ["var "]);
  1154. smalltalk.send(aCollection, "_do_separatedBy_", [(function(each){return smalltalk.send(self['@stream'], "_nextPutAll_", [each]);}), (function(){return smalltalk.send(self['@stream'], "_nextPutAll_", [","]);})]);
  1155. (function($rec){smalltalk.send($rec, "_nextPutAll_", [";"]);return smalltalk.send($rec, "_lf", []);})(self['@stream']);
  1156. return self;}
  1157. }),
  1158. smalltalk.JSStream);
  1159. smalltalk.addMethod(
  1160. "_appendToInstruction_",
  1161. smalltalk.method({
  1162. selector: "appendToInstruction:",
  1163. fn: function (anIRInstruction) {
  1164. var self=this;
  1165. smalltalk.send(anIRInstruction, "_appendBlock_", [self]);
  1166. return self;}
  1167. }),
  1168. smalltalk.BlockClosure);
  1169. smalltalk.addMethod(
  1170. "_appendToInstruction_",
  1171. smalltalk.method({
  1172. selector: "appendToInstruction:",
  1173. fn: function (anInstruction) {
  1174. var self=this;
  1175. smalltalk.send(anInstruction, "_appendString_", [self]);
  1176. return self;}
  1177. }),
  1178. smalltalk.String);
  1179. smalltalk.addMethod(
  1180. "_asVariableName",
  1181. smalltalk.method({
  1182. selector: "asVariableName",
  1183. fn: function () {
  1184. var self=this;
  1185. 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;})]));
  1186. return self;}
  1187. }),
  1188. smalltalk.String);
  1189. smalltalk.addMethod(
  1190. "_emitOn_",
  1191. smalltalk.method({
  1192. selector: "emitOn:",
  1193. fn: function (aStream) {
  1194. var self=this;
  1195. smalltalk.send(aStream, "_nextPutAll_", [self]);
  1196. return self;}
  1197. }),
  1198. smalltalk.String);