Compiler-Inlining.deploy.js 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836
  1. smalltalk.addPackage('Compiler-Inlining', {});
  2. smalltalk.addClass('IRInlinedAssignment', smalltalk.IRAssignment, [], 'Compiler-Inlining');
  3. smalltalk.addMethod(
  4. "_accept_",
  5. smalltalk.method({
  6. selector: "accept:",
  7. fn: function (aVisitor) {
  8. var self=this;
  9. return smalltalk.send(aVisitor, "_visitIRInlinedAssignment_", [self]);
  10. return self;}
  11. }),
  12. smalltalk.IRInlinedAssignment);
  13. smalltalk.addMethod(
  14. "_isInlined",
  15. smalltalk.method({
  16. selector: "isInlined",
  17. fn: function () {
  18. var self=this;
  19. return true;
  20. return self;}
  21. }),
  22. smalltalk.IRInlinedAssignment);
  23. smalltalk.addClass('IRInlinedClosure', smalltalk.IRClosure, [], 'Compiler-Inlining');
  24. smalltalk.addMethod(
  25. "_accept_",
  26. smalltalk.method({
  27. selector: "accept:",
  28. fn: function (aVisitor) {
  29. var self=this;
  30. smalltalk.send(aVisitor, "_visitIRInlinedClosure_", [self]);
  31. return self;}
  32. }),
  33. smalltalk.IRInlinedClosure);
  34. smalltalk.addMethod(
  35. "_isInlined",
  36. smalltalk.method({
  37. selector: "isInlined",
  38. fn: function () {
  39. var self=this;
  40. return true;
  41. return self;}
  42. }),
  43. smalltalk.IRInlinedClosure);
  44. smalltalk.addClass('IRInlinedReturn', smalltalk.IRReturn, [], 'Compiler-Inlining');
  45. smalltalk.addMethod(
  46. "_accept_",
  47. smalltalk.method({
  48. selector: "accept:",
  49. fn: function (aVisitor) {
  50. var self=this;
  51. return smalltalk.send(aVisitor, "_visitIRInlinedReturn_", [self]);
  52. return self;}
  53. }),
  54. smalltalk.IRInlinedReturn);
  55. smalltalk.addMethod(
  56. "_isInlined",
  57. smalltalk.method({
  58. selector: "isInlined",
  59. fn: function () {
  60. var self=this;
  61. return true;
  62. return self;}
  63. }),
  64. smalltalk.IRInlinedReturn);
  65. smalltalk.addClass('IRInlinedNonLocalReturn', smalltalk.IRInlinedReturn, [], 'Compiler-Inlining');
  66. smalltalk.addMethod(
  67. "_accept_",
  68. smalltalk.method({
  69. selector: "accept:",
  70. fn: function (aVisitor) {
  71. var self=this;
  72. return smalltalk.send(aVisitor, "_visitIRInlinedNonLocalReturn_", [self]);
  73. return self;}
  74. }),
  75. smalltalk.IRInlinedNonLocalReturn);
  76. smalltalk.addMethod(
  77. "_isInlined",
  78. smalltalk.method({
  79. selector: "isInlined",
  80. fn: function () {
  81. var self=this;
  82. return true;
  83. return self;}
  84. }),
  85. smalltalk.IRInlinedNonLocalReturn);
  86. smalltalk.addClass('IRInlinedSend', smalltalk.IRSend, [], 'Compiler-Inlining');
  87. smalltalk.addMethod(
  88. "_accept_",
  89. smalltalk.method({
  90. selector: "accept:",
  91. fn: function (aVisitor) {
  92. var self=this;
  93. smalltalk.send(aVisitor, "_visitInlinedSend_", [self]);
  94. return self;}
  95. }),
  96. smalltalk.IRInlinedSend);
  97. smalltalk.addMethod(
  98. "_isInlined",
  99. smalltalk.method({
  100. selector: "isInlined",
  101. fn: function () {
  102. var self=this;
  103. return true;
  104. return self;}
  105. }),
  106. smalltalk.IRInlinedSend);
  107. smalltalk.addClass('IRInlinedIfFalse', smalltalk.IRInlinedSend, [], 'Compiler-Inlining');
  108. smalltalk.addMethod(
  109. "_accept_",
  110. smalltalk.method({
  111. selector: "accept:",
  112. fn: function (aVisitor) {
  113. var self=this;
  114. smalltalk.send(aVisitor, "_visitIRInlinedIfFalse_", [self]);
  115. return self;}
  116. }),
  117. smalltalk.IRInlinedIfFalse);
  118. smalltalk.addClass('IRInlinedIfTrue', smalltalk.IRInlinedSend, [], 'Compiler-Inlining');
  119. smalltalk.addMethod(
  120. "_accept_",
  121. smalltalk.method({
  122. selector: "accept:",
  123. fn: function (aVisitor) {
  124. var self=this;
  125. smalltalk.send(aVisitor, "_visitIRInlinedIfTrue_", [self]);
  126. return self;}
  127. }),
  128. smalltalk.IRInlinedIfTrue);
  129. smalltalk.addClass('IRInlinedSequence', smalltalk.IRBlockSequence, [], 'Compiler-Inlining');
  130. smalltalk.addMethod(
  131. "_accept_",
  132. smalltalk.method({
  133. selector: "accept:",
  134. fn: function (aVisitor) {
  135. var self=this;
  136. smalltalk.send(aVisitor, "_visitIRInlinedSequence_", [self]);
  137. return self;}
  138. }),
  139. smalltalk.IRInlinedSequence);
  140. smalltalk.addMethod(
  141. "_isInlined",
  142. smalltalk.method({
  143. selector: "isInlined",
  144. fn: function () {
  145. var self=this;
  146. return true;
  147. return self;}
  148. }),
  149. smalltalk.IRInlinedSequence);
  150. smalltalk.addClass('IRAssigningInlinedSequence', smalltalk.IRInlinedSequence, ['assignTo'], 'Compiler-Inlining');
  151. smalltalk.addMethod(
  152. "_accept_",
  153. smalltalk.method({
  154. selector: "accept:",
  155. fn: function (aVisitor) {
  156. var self=this;
  157. return smalltalk.send(aVisitor, "_visitIRAssigningInlinedSequence_", [self]);
  158. return self;}
  159. }),
  160. smalltalk.IRAssigningInlinedSequence);
  161. smalltalk.addMethod(
  162. "_assignTo",
  163. smalltalk.method({
  164. selector: "assignTo",
  165. fn: function () {
  166. var self=this;
  167. return self['@assignTo'];
  168. return self;}
  169. }),
  170. smalltalk.IRAssigningInlinedSequence);
  171. smalltalk.addMethod(
  172. "_assignTo_",
  173. smalltalk.method({
  174. selector: "assignTo:",
  175. fn: function (anIRInstruction) {
  176. var self=this;
  177. (self['@assignTo']=anIRInstruction);
  178. return self;}
  179. }),
  180. smalltalk.IRAssigningInlinedSequence);
  181. smalltalk.addClass('IRReturningInlinedSequence', smalltalk.IRInlinedSequence, [], 'Compiler-Inlining');
  182. smalltalk.addMethod(
  183. "_accept_",
  184. smalltalk.method({
  185. selector: "accept:",
  186. fn: function (aVisitor) {
  187. var self=this;
  188. return smalltalk.send(aVisitor, "_visitIRReturningInlinedSequence_", [self]);
  189. return self;}
  190. }),
  191. smalltalk.IRReturningInlinedSequence);
  192. smalltalk.addClass('IRNonLocalReturningInlinedSequence', smalltalk.IRReturningInlinedSequence, [], 'Compiler-Inlining');
  193. smalltalk.addMethod(
  194. "_accept_",
  195. smalltalk.method({
  196. selector: "accept:",
  197. fn: function (aVisitor) {
  198. var self=this;
  199. return smalltalk.send(aVisitor, "_visitIRNonLocalReturningInlinedSequence_", [self]);
  200. return self;}
  201. }),
  202. smalltalk.IRNonLocalReturningInlinedSequence);
  203. smalltalk.addClass('IRInliner', smalltalk.IRVisitor, [], 'Compiler-Inlining');
  204. smalltalk.addMethod(
  205. "_assignmentInliner",
  206. smalltalk.method({
  207. selector: "assignmentInliner",
  208. fn: function () {
  209. var self=this;
  210. return (function($rec){smalltalk.send($rec, "_translator_", [self]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.IRAssignmentInliner || IRAssignmentInliner), "_new", []));
  211. return self;}
  212. }),
  213. smalltalk.IRInliner);
  214. smalltalk.addMethod(
  215. "_nonLocalReturnInliner",
  216. smalltalk.method({
  217. selector: "nonLocalReturnInliner",
  218. fn: function () {
  219. var self=this;
  220. return (function($rec){smalltalk.send($rec, "_translator_", [self]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.IRNonLocalReturnInliner || IRNonLocalReturnInliner), "_new", []));
  221. return self;}
  222. }),
  223. smalltalk.IRInliner);
  224. smalltalk.addMethod(
  225. "_returnInliner",
  226. smalltalk.method({
  227. selector: "returnInliner",
  228. fn: function () {
  229. var self=this;
  230. return (function($rec){smalltalk.send($rec, "_translator_", [self]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.IRReturnInliner || IRReturnInliner), "_new", []));
  231. return self;}
  232. }),
  233. smalltalk.IRInliner);
  234. smalltalk.addMethod(
  235. "_sendInliner",
  236. smalltalk.method({
  237. selector: "sendInliner",
  238. fn: function () {
  239. var self=this;
  240. return (function($rec){smalltalk.send($rec, "_translator_", [self]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.IRSendInliner || IRSendInliner), "_new", []));
  241. return self;}
  242. }),
  243. smalltalk.IRInliner);
  244. smalltalk.addMethod(
  245. "_shouldInlineAssignment_",
  246. smalltalk.method({
  247. selector: "shouldInlineAssignment:",
  248. fn: function (anIRAssignment) {
  249. var self=this;
  250. return smalltalk.send(smalltalk.send(smalltalk.send(anIRAssignment, "_isInlined", []), "_not", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(anIRAssignment, "_instructions", []), "_last", []), "_isSend", []), "_and_", [(function(){return smalltalk.send(self, "_shouldInlineSend_", [smalltalk.send(smalltalk.send(anIRAssignment, "_instructions", []), "_last", [])]);})]);})]);
  251. return self;}
  252. }),
  253. smalltalk.IRInliner);
  254. smalltalk.addMethod(
  255. "_shouldInlineReturn_",
  256. smalltalk.method({
  257. selector: "shouldInlineReturn:",
  258. fn: function (anIRReturn) {
  259. var self=this;
  260. return smalltalk.send(smalltalk.send(smalltalk.send(anIRReturn, "_isInlined", []), "_not", []), "_and_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(anIRReturn, "_instructions", []), "_first", []), "_isSend", []), "_and_", [(function(){return smalltalk.send(self, "_shouldInlineSend_", [smalltalk.send(smalltalk.send(anIRReturn, "_instructions", []), "_first", [])]);})]);})]);
  261. return self;}
  262. }),
  263. smalltalk.IRInliner);
  264. smalltalk.addMethod(
  265. "_shouldInlineSend_",
  266. smalltalk.method({
  267. selector: "shouldInlineSend:",
  268. fn: function (anIRSend) {
  269. var self=this;
  270. return smalltalk.send(smalltalk.send(smalltalk.send(anIRSend, "_isInlined", []), "_not", []), "_and_", [(function(){return smalltalk.send((smalltalk.IRSendInliner || IRSendInliner), "_shouldInline_", [anIRSend]);})]);
  271. return self;}
  272. }),
  273. smalltalk.IRInliner);
  274. smalltalk.addMethod(
  275. "_transformNonLocalReturn_",
  276. smalltalk.method({
  277. selector: "transformNonLocalReturn:",
  278. fn: function (anIRNonLocalReturn) {
  279. var self=this;
  280. var $early={};
  281. try{var localReturn=nil;
  282. ((($receiver = smalltalk.send(smalltalk.send(anIRNonLocalReturn, "_scope", []), "_canInlineNonLocalReturns", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(smalltalk.send(smalltalk.send(anIRNonLocalReturn, "_scope", []), "_methodScope", []), "_removeNonLocalReturn_", [smalltalk.send(anIRNonLocalReturn, "_scope", [])]);(localReturn=(function($rec){smalltalk.send($rec, "_scope_", [smalltalk.send(anIRNonLocalReturn, "_scope", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.IRReturn || IRReturn), "_new", [])));smalltalk.send(smalltalk.send(anIRNonLocalReturn, "_instructions", []), "_do_", [(function(each){return smalltalk.send(localReturn, "_add_", [each]);})]);smalltalk.send(anIRNonLocalReturn, "_replaceWith_", [localReturn]);return (function(){throw $early=[localReturn]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(smalltalk.send(smalltalk.send(anIRNonLocalReturn, "_scope", []), "_methodScope", []), "_removeNonLocalReturn_", [smalltalk.send(anIRNonLocalReturn, "_scope", [])]);(localReturn=(function($rec){smalltalk.send($rec, "_scope_", [smalltalk.send(anIRNonLocalReturn, "_scope", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.IRReturn || IRReturn), "_new", [])));smalltalk.send(smalltalk.send(anIRNonLocalReturn, "_instructions", []), "_do_", [(function(each){return smalltalk.send(localReturn, "_add_", [each]);})]);smalltalk.send(anIRNonLocalReturn, "_replaceWith_", [localReturn]);return (function(){throw $early=[localReturn]})();})]));
  283. return smalltalk.send(self, "_visitIRNonLocalReturn_", [anIRNonLocalReturn], smalltalk.IRInliner.superclass || nil);
  284. return self;
  285. } catch(e) {if(e===$early)return e[0]; throw e}}
  286. }),
  287. smalltalk.IRInliner);
  288. smalltalk.addMethod(
  289. "_visitIRAssignment_",
  290. smalltalk.method({
  291. selector: "visitIRAssignment:",
  292. fn: function (anIRAssignment) {
  293. var self=this;
  294. return ((($receiver = smalltalk.send(self, "_shouldInlineAssignment_", [anIRAssignment])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(smalltalk.send(self, "_assignmentInliner", []), "_inlineAssignment_", [anIRAssignment]);})() : (function(){return smalltalk.send(self, "_visitIRAssignment_", [anIRAssignment], smalltalk.IRInliner.superclass || nil);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(self, "_assignmentInliner", []), "_inlineAssignment_", [anIRAssignment]);}), (function(){return smalltalk.send(self, "_visitIRAssignment_", [anIRAssignment], smalltalk.IRInliner.superclass || nil);})]));
  295. return self;}
  296. }),
  297. smalltalk.IRInliner);
  298. smalltalk.addMethod(
  299. "_visitIRNonLocalReturn_",
  300. smalltalk.method({
  301. selector: "visitIRNonLocalReturn:",
  302. fn: function (anIRNonLocalReturn) {
  303. var self=this;
  304. return ((($receiver = smalltalk.send(self, "_shouldInlineReturn_", [anIRNonLocalReturn])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(smalltalk.send(self, "_nonLocalReturnInliner", []), "_inlineReturn_", [anIRNonLocalReturn]);})() : (function(){return smalltalk.send(self, "_transformNonLocalReturn_", [anIRNonLocalReturn]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(self, "_nonLocalReturnInliner", []), "_inlineReturn_", [anIRNonLocalReturn]);}), (function(){return smalltalk.send(self, "_transformNonLocalReturn_", [anIRNonLocalReturn]);})]));
  305. return self;}
  306. }),
  307. smalltalk.IRInliner);
  308. smalltalk.addMethod(
  309. "_visitIRReturn_",
  310. smalltalk.method({
  311. selector: "visitIRReturn:",
  312. fn: function (anIRReturn) {
  313. var self=this;
  314. return ((($receiver = smalltalk.send(self, "_shouldInlineReturn_", [anIRReturn])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(smalltalk.send(self, "_returnInliner", []), "_inlineReturn_", [anIRReturn]);})() : (function(){return smalltalk.send(self, "_visitIRReturn_", [anIRReturn], smalltalk.IRInliner.superclass || nil);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(self, "_returnInliner", []), "_inlineReturn_", [anIRReturn]);}), (function(){return smalltalk.send(self, "_visitIRReturn_", [anIRReturn], smalltalk.IRInliner.superclass || nil);})]));
  315. return self;}
  316. }),
  317. smalltalk.IRInliner);
  318. smalltalk.addMethod(
  319. "_visitIRSend_",
  320. smalltalk.method({
  321. selector: "visitIRSend:",
  322. fn: function (anIRSend) {
  323. var self=this;
  324. return ((($receiver = smalltalk.send(self, "_shouldInlineSend_", [anIRSend])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(smalltalk.send(self, "_sendInliner", []), "_inlineSend_", [anIRSend]);})() : (function(){return smalltalk.send(self, "_visitIRSend_", [anIRSend], smalltalk.IRInliner.superclass || nil);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(self, "_sendInliner", []), "_inlineSend_", [anIRSend]);}), (function(){return smalltalk.send(self, "_visitIRSend_", [anIRSend], smalltalk.IRInliner.superclass || nil);})]));
  325. return self;}
  326. }),
  327. smalltalk.IRInliner);
  328. smalltalk.addClass('IRInliningJSTranslator', smalltalk.IRJSTranslator, [], 'Compiler-Inlining');
  329. smalltalk.addMethod(
  330. "_visitIRAssigningInlinedSequence_",
  331. smalltalk.method({
  332. selector: "visitIRAssigningInlinedSequence:",
  333. fn: function (anIRInlinedSequence) {
  334. var self=this;
  335. smalltalk.send(smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_allButLast", []), "_do_", [(function(each){return smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutStatementWith_", [(function(){return smalltalk.send(self, "_visit_", [each]);})]);})]);
  336. smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutStatementWith_", [(function(){return ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_last", []), "_canBeAssigned", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){(function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(anIRInlinedSequence, "_assignTo", []), "_variable", []), "_alias", [])]);return smalltalk.send($rec, "_nextPutAssignment", []);})(smalltalk.send(self, "_stream", []));return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_last", [])]);})() : (function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_last", [])]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){(function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(smalltalk.send(anIRInlinedSequence, "_assignTo", []), "_variable", []), "_alias", [])]);return smalltalk.send($rec, "_nextPutAssignment", []);})(smalltalk.send(self, "_stream", []));return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_last", [])]);}), (function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_last", [])]);})]));})]);
  337. return self;}
  338. }),
  339. smalltalk.IRInliningJSTranslator);
  340. smalltalk.addMethod(
  341. "_visitIRInlinedAssignment_",
  342. smalltalk.method({
  343. selector: "visitIRInlinedAssignment:",
  344. fn: function (anIRInlinedAssignment) {
  345. var self=this;
  346. smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedAssignment, "_instructions", []), "_last", [])]);
  347. return self;}
  348. }),
  349. smalltalk.IRInliningJSTranslator);
  350. smalltalk.addMethod(
  351. "_visitIRInlinedClosure_",
  352. smalltalk.method({
  353. selector: "visitIRInlinedClosure:",
  354. fn: function (anIRInlinedClosure) {
  355. var self=this;
  356. smalltalk.send(smalltalk.send(anIRInlinedClosure, "_instructions", []), "_do_", [(function(each){return smalltalk.send(self, "_visit_", [each]);})]);
  357. return self;}
  358. }),
  359. smalltalk.IRInliningJSTranslator);
  360. smalltalk.addMethod(
  361. "_visitIRInlinedIfFalse_",
  362. smalltalk.method({
  363. selector: "visitIRInlinedIfFalse:",
  364. fn: function (anIRInlinedIfFalse) {
  365. var self=this;
  366. smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutIf_with_", [(function(){smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutAll_", ["! smalltalk.assert("]);smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedIfFalse, "_instructions", []), "_first", [])]);return smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutAll_", [")"]);}), (function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedIfFalse, "_instructions", []), "_last", [])]);})]);
  367. return self;}
  368. }),
  369. smalltalk.IRInliningJSTranslator);
  370. smalltalk.addMethod(
  371. "_visitIRInlinedIfTrue_",
  372. smalltalk.method({
  373. selector: "visitIRInlinedIfTrue:",
  374. fn: function (anIRInlinedIfTrue) {
  375. var self=this;
  376. smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutIf_with_", [(function(){smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutAll_", ["smalltalk.assert("]);smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedIfTrue, "_instructions", []), "_first", [])]);return smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutAll_", [")"]);}), (function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedIfTrue, "_instructions", []), "_last", [])]);})]);
  377. return self;}
  378. }),
  379. smalltalk.IRInliningJSTranslator);
  380. smalltalk.addMethod(
  381. "_visitIRInlinedNonLocalReturn_",
  382. smalltalk.method({
  383. selector: "visitIRInlinedNonLocalReturn:",
  384. fn: function (anIRInlinedReturn) {
  385. var self=this;
  386. smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutStatementWith_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedReturn, "_instructions", []), "_last", [])]);})]);
  387. smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutNonLocalReturnWith_", [(function(){return nil;})]);
  388. return self;}
  389. }),
  390. smalltalk.IRInliningJSTranslator);
  391. smalltalk.addMethod(
  392. "_visitIRInlinedReturn_",
  393. smalltalk.method({
  394. selector: "visitIRInlinedReturn:",
  395. fn: function (anIRInlinedReturn) {
  396. var self=this;
  397. smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedReturn, "_instructions", []), "_last", [])]);
  398. return self;}
  399. }),
  400. smalltalk.IRInliningJSTranslator);
  401. smalltalk.addMethod(
  402. "_visitIRInlinedSequence_",
  403. smalltalk.method({
  404. selector: "visitIRInlinedSequence:",
  405. fn: function (anIRInlinedSequence) {
  406. var self=this;
  407. smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_do_", [(function(each){return smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutStatementWith_", [(function(){return smalltalk.send(self, "_visit_", [each]);})]);})]);
  408. return self;}
  409. }),
  410. smalltalk.IRInliningJSTranslator);
  411. smalltalk.addMethod(
  412. "_visitIRNonLocalReturningInlinedSequence_",
  413. smalltalk.method({
  414. selector: "visitIRNonLocalReturningInlinedSequence:",
  415. fn: function (anIRInlinedSequence) {
  416. var self=this;
  417. smalltalk.send(smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_allButLast", []), "_do_", [(function(each){return smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutStatementWith_", [(function(){return smalltalk.send(self, "_visit_", [each]);})]);})]);
  418. smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutStatementWith_", [(function(){return ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_last", []), "_canBeAssigned", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutNonLocalReturnWith_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_last", [])]);})]);})() : (function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_last", [])]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutNonLocalReturnWith_", [(function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_last", [])]);})]);}), (function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_last", [])]);})]));})]);
  419. return self;}
  420. }),
  421. smalltalk.IRInliningJSTranslator);
  422. smalltalk.addMethod(
  423. "_visitIRReturningInlinedSequence_",
  424. smalltalk.method({
  425. selector: "visitIRReturningInlinedSequence:",
  426. fn: function (anIRInlinedSequence) {
  427. var self=this;
  428. smalltalk.send(smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_allButLast", []), "_do_", [(function(each){return smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutStatementWith_", [(function(){return smalltalk.send(self, "_visit_", [each]);})]);})]);
  429. smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutStatementWith_", [(function(){return ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_last", []), "_canBeAssigned", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutReturn", []);return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_last", [])]);})() : (function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_last", [])]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){smalltalk.send(smalltalk.send(self, "_stream", []), "_nextPutReturn", []);return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_last", [])]);}), (function(){return smalltalk.send(self, "_visit_", [smalltalk.send(smalltalk.send(anIRInlinedSequence, "_instructions", []), "_last", [])]);})]));})]);
  430. return self;}
  431. }),
  432. smalltalk.IRInliningJSTranslator);
  433. smalltalk.addClass('IRSendInliner', smalltalk.Object, ['send', 'translator'], 'Compiler-Inlining');
  434. smalltalk.addMethod(
  435. "_ifFalse_",
  436. smalltalk.method({
  437. selector: "ifFalse:",
  438. fn: function (anIRInstruction) {
  439. var self=this;
  440. var inlinedSend=nil;
  441. var inlinedClosure=nil;
  442. ((($receiver = smalltalk.send(anIRInstruction, "_isClosure", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self, "_inliningError_", ["Message argument should be a block"]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self, "_inliningError_", ["Message argument should be a block"]);})]));
  443. ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(anIRInstruction, "_arguments", []), "_size", []), "__eq", [(0)])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self, "_inliningError_", ["Inlined block should have zero argument"]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self, "_inliningError_", ["Inlined block should have zero argument"]);})]));
  444. (inlinedClosure=smalltalk.send(self, "_inlineClosure_", [anIRInstruction]));
  445. (inlinedSend=smalltalk.send((smalltalk.IRInlinedIfFalse || IRInlinedIfFalse), "_new", []));
  446. (function($rec){smalltalk.send($rec, "_add_", [smalltalk.send(smalltalk.send(smalltalk.send(self, "_send", []), "_instructions", []), "_first", [])]);return smalltalk.send($rec, "_add_", [inlinedClosure]);})(inlinedSend);
  447. smalltalk.send(smalltalk.send(self, "_send", []), "_replaceWith_", [inlinedSend]);
  448. return inlinedSend;
  449. return self;}
  450. }),
  451. smalltalk.IRSendInliner);
  452. smalltalk.addMethod(
  453. "_ifTrue_",
  454. smalltalk.method({
  455. selector: "ifTrue:",
  456. fn: function (anIRInstruction) {
  457. var self=this;
  458. var inlinedSend=nil;
  459. var inlinedClosure=nil;
  460. ((($receiver = smalltalk.send(anIRInstruction, "_isClosure", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self, "_inliningError_", ["Message argument should be a block"]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self, "_inliningError_", ["Message argument should be a block"]);})]));
  461. ((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(anIRInstruction, "_arguments", []), "_size", []), "__eq", [(0)])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self, "_inliningError_", ["Inlined block should have zero argument"]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self, "_inliningError_", ["Inlined block should have zero argument"]);})]));
  462. (inlinedClosure=smalltalk.send(self, "_inlineClosure_", [anIRInstruction]));
  463. (inlinedSend=smalltalk.send((smalltalk.IRInlinedIfTrue || IRInlinedIfTrue), "_new", []));
  464. (function($rec){smalltalk.send($rec, "_add_", [smalltalk.send(smalltalk.send(smalltalk.send(self, "_send", []), "_instructions", []), "_first", [])]);return smalltalk.send($rec, "_add_", [inlinedClosure]);})(inlinedSend);
  465. smalltalk.send(smalltalk.send(self, "_send", []), "_replaceWith_", [inlinedSend]);
  466. return inlinedSend;
  467. return self;}
  468. }),
  469. smalltalk.IRSendInliner);
  470. smalltalk.addMethod(
  471. "_inlineClosure_",
  472. smalltalk.method({
  473. selector: "inlineClosure:",
  474. fn: function (anIRClosure) {
  475. var self=this;
  476. var inlinedClosure=nil;
  477. var sequence=nil;
  478. var statements=nil;
  479. (inlinedClosure=smalltalk.send(self, "_inlinedClosure", []));
  480. smalltalk.send(inlinedClosure, "_scope_", [smalltalk.send(anIRClosure, "_scope", [])]);
  481. smalltalk.send(smalltalk.send(anIRClosure, "_instructions", []), "_do_", [(function(each){return ((($receiver = smalltalk.send(each, "_isSequence", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(inlinedClosure, "_add_", [each]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(inlinedClosure, "_add_", [each]);})]));})]);
  482. (sequence=smalltalk.send(self, "_inlinedSequence", []));
  483. smalltalk.send(inlinedClosure, "_add_", [sequence]);
  484. (statements=smalltalk.send(smalltalk.send(smalltalk.send(anIRClosure, "_instructions", []), "_last", []), "_instructions", []));
  485. smalltalk.send(statements, "_ifNotEmpty_", [(function(){smalltalk.send(smalltalk.send(statements, "_allButLast", []), "_do_", [(function(each){return smalltalk.send(sequence, "_add_", [smalltalk.send(smalltalk.send(self, "_translator", []), "_visit_", [each])]);})]);return ((($receiver = smalltalk.send(smalltalk.send(statements, "_last", []), "_isLocalReturn", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(sequence, "_add_", [smalltalk.send(smalltalk.send(self, "_translator", []), "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(statements, "_last", []), "_instructions", []), "_first", [])])]);})() : (function(){return smalltalk.send(sequence, "_add_", [smalltalk.send(smalltalk.send(self, "_translator", []), "_visit_", [smalltalk.send(statements, "_last", [])])]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(sequence, "_add_", [smalltalk.send(smalltalk.send(self, "_translator", []), "_visit_", [smalltalk.send(smalltalk.send(smalltalk.send(statements, "_last", []), "_instructions", []), "_first", [])])]);}), (function(){return smalltalk.send(sequence, "_add_", [smalltalk.send(smalltalk.send(self, "_translator", []), "_visit_", [smalltalk.send(statements, "_last", [])])]);})]));})]);
  486. return inlinedClosure;
  487. return self;}
  488. }),
  489. smalltalk.IRSendInliner);
  490. smalltalk.addMethod(
  491. "_inlineSend_",
  492. smalltalk.method({
  493. selector: "inlineSend:",
  494. fn: function (anIRSend) {
  495. var self=this;
  496. smalltalk.send(self, "_send_", [anIRSend]);
  497. smalltalk.send(self, "_perform_withArguments_", [smalltalk.send(smalltalk.send(self, "_send", []), "_selector", []), smalltalk.send(smalltalk.send(smalltalk.send(self, "_send", []), "_instructions", []), "_allButFirst", [])]);
  498. return self;}
  499. }),
  500. smalltalk.IRSendInliner);
  501. smalltalk.addMethod(
  502. "_inlinedClosure",
  503. smalltalk.method({
  504. selector: "inlinedClosure",
  505. fn: function () {
  506. var self=this;
  507. return smalltalk.send((smalltalk.IRInlinedClosure || IRInlinedClosure), "_new", []);
  508. return self;}
  509. }),
  510. smalltalk.IRSendInliner);
  511. smalltalk.addMethod(
  512. "_inlinedSequence",
  513. smalltalk.method({
  514. selector: "inlinedSequence",
  515. fn: function () {
  516. var self=this;
  517. return smalltalk.send((smalltalk.IRInlinedSequence || IRInlinedSequence), "_new", []);
  518. return self;}
  519. }),
  520. smalltalk.IRSendInliner);
  521. smalltalk.addMethod(
  522. "_inliningError_",
  523. smalltalk.method({
  524. selector: "inliningError:",
  525. fn: function (aString) {
  526. var self=this;
  527. smalltalk.send((smalltalk.InliningError || InliningError), "_signal_", [aString]);
  528. return self;}
  529. }),
  530. smalltalk.IRSendInliner);
  531. smalltalk.addMethod(
  532. "_send",
  533. smalltalk.method({
  534. selector: "send",
  535. fn: function () {
  536. var self=this;
  537. return self['@send'];
  538. return self;}
  539. }),
  540. smalltalk.IRSendInliner);
  541. smalltalk.addMethod(
  542. "_send_",
  543. smalltalk.method({
  544. selector: "send:",
  545. fn: function (anIRSend) {
  546. var self=this;
  547. (self['@send']=anIRSend);
  548. return self;}
  549. }),
  550. smalltalk.IRSendInliner);
  551. smalltalk.addMethod(
  552. "_translator",
  553. smalltalk.method({
  554. selector: "translator",
  555. fn: function () {
  556. var self=this;
  557. return self['@translator'];
  558. return self;}
  559. }),
  560. smalltalk.IRSendInliner);
  561. smalltalk.addMethod(
  562. "_translator_",
  563. smalltalk.method({
  564. selector: "translator:",
  565. fn: function (anASTTranslator) {
  566. var self=this;
  567. (self['@translator']=anASTTranslator);
  568. return self;}
  569. }),
  570. smalltalk.IRSendInliner);
  571. smalltalk.addMethod(
  572. "_inlinedSelectors",
  573. smalltalk.method({
  574. selector: "inlinedSelectors",
  575. fn: function () {
  576. var self=this;
  577. return ["ifTrue:", "ifFalse:"];
  578. return self;}
  579. }),
  580. smalltalk.IRSendInliner.klass);
  581. smalltalk.addMethod(
  582. "_shouldInline_",
  583. smalltalk.method({
  584. selector: "shouldInline:",
  585. fn: function (anIRInstruction) {
  586. var self=this;
  587. var $early={};
  588. try{((($receiver = smalltalk.send(smalltalk.send(self, "_inlinedSelectors", []), "_includes_", [smalltalk.send(anIRInstruction, "_selector", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw $early=[false]})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw $early=[false]})();})]));
  589. smalltalk.send(smalltalk.send(smalltalk.send(anIRInstruction, "_instructions", []), "_allButFirst", []), "_do_", [(function(each){return ((($receiver = smalltalk.send(each, "_isClosure", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw $early=[false]})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw $early=[false]})();})]));})]);
  590. return true;
  591. return self;
  592. } catch(e) {if(e===$early)return e[0]; throw e}}
  593. }),
  594. smalltalk.IRSendInliner.klass);
  595. smalltalk.addClass('IRAssignmentInliner', smalltalk.IRSendInliner, ['assignment'], 'Compiler-Inlining');
  596. smalltalk.addMethod(
  597. "_assignment",
  598. smalltalk.method({
  599. selector: "assignment",
  600. fn: function () {
  601. var self=this;
  602. return self['@assignment'];
  603. return self;}
  604. }),
  605. smalltalk.IRAssignmentInliner);
  606. smalltalk.addMethod(
  607. "_assignment_",
  608. smalltalk.method({
  609. selector: "assignment:",
  610. fn: function (aNode) {
  611. var self=this;
  612. (self['@assignment']=aNode);
  613. return self;}
  614. }),
  615. smalltalk.IRAssignmentInliner);
  616. smalltalk.addMethod(
  617. "_inlineAssignment_",
  618. smalltalk.method({
  619. selector: "inlineAssignment:",
  620. fn: function (anIRAssignment) {
  621. var self=this;
  622. var inlinedAssignment=nil;
  623. smalltalk.send(self, "_assignment_", [anIRAssignment]);
  624. (inlinedAssignment=smalltalk.send((smalltalk.IRInlinedAssignment || IRInlinedAssignment), "_new", []));
  625. smalltalk.send(smalltalk.send(anIRAssignment, "_instructions", []), "_do_", [(function(each){return smalltalk.send(inlinedAssignment, "_add_", [each]);})]);
  626. smalltalk.send(anIRAssignment, "_replaceWith_", [inlinedAssignment]);
  627. smalltalk.send(self, "_inlineSend_", [smalltalk.send(smalltalk.send(inlinedAssignment, "_instructions", []), "_last", [])]);
  628. return inlinedAssignment;
  629. return self;}
  630. }),
  631. smalltalk.IRAssignmentInliner);
  632. smalltalk.addMethod(
  633. "_inlinedSequence",
  634. smalltalk.method({
  635. selector: "inlinedSequence",
  636. fn: function () {
  637. var self=this;
  638. return (function($rec){smalltalk.send($rec, "_assignTo_", [smalltalk.send(smalltalk.send(smalltalk.send(self, "_assignment", []), "_instructions", []), "_first", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.IRAssigningInlinedSequence || IRAssigningInlinedSequence), "_new", []));
  639. return self;}
  640. }),
  641. smalltalk.IRAssignmentInliner);
  642. smalltalk.addClass('IRReturnInliner', smalltalk.IRSendInliner, [], 'Compiler-Inlining');
  643. smalltalk.addMethod(
  644. "_inlineReturn_",
  645. smalltalk.method({
  646. selector: "inlineReturn:",
  647. fn: function (anIRReturn) {
  648. var self=this;
  649. var return_=nil;
  650. (return_=smalltalk.send(self, "_inlinedReturn", []));
  651. smalltalk.send(smalltalk.send(anIRReturn, "_instructions", []), "_do_", [(function(each){return smalltalk.send(return_, "_add_", [each]);})]);
  652. smalltalk.send(anIRReturn, "_replaceWith_", [return_]);
  653. smalltalk.send(self, "_inlineSend_", [smalltalk.send(smalltalk.send(return_, "_instructions", []), "_last", [])]);
  654. return return_;
  655. return self;}
  656. }),
  657. smalltalk.IRReturnInliner);
  658. smalltalk.addMethod(
  659. "_inlinedReturn",
  660. smalltalk.method({
  661. selector: "inlinedReturn",
  662. fn: function () {
  663. var self=this;
  664. return smalltalk.send((smalltalk.IRInlinedReturn || IRInlinedReturn), "_new", []);
  665. return self;}
  666. }),
  667. smalltalk.IRReturnInliner);
  668. smalltalk.addMethod(
  669. "_inlinedSequence",
  670. smalltalk.method({
  671. selector: "inlinedSequence",
  672. fn: function () {
  673. var self=this;
  674. return smalltalk.send((smalltalk.IRReturningInlinedSequence || IRReturningInlinedSequence), "_new", []);
  675. return self;}
  676. }),
  677. smalltalk.IRReturnInliner);
  678. smalltalk.addClass('IRNonLocalReturnInliner', smalltalk.IRReturnInliner, [], 'Compiler-Inlining');
  679. smalltalk.addMethod(
  680. "_inlinedReturn",
  681. smalltalk.method({
  682. selector: "inlinedReturn",
  683. fn: function () {
  684. var self=this;
  685. return smalltalk.send((smalltalk.IRInlinedNonLocalReturn || IRInlinedNonLocalReturn), "_new", []);
  686. return self;}
  687. }),
  688. smalltalk.IRNonLocalReturnInliner);
  689. smalltalk.addMethod(
  690. "_inlinedSequence",
  691. smalltalk.method({
  692. selector: "inlinedSequence",
  693. fn: function () {
  694. var self=this;
  695. return smalltalk.send((smalltalk.IRNonLocalReturningInlinedSequence || IRNonLocalReturningInlinedSequence), "_new", []);
  696. return self;}
  697. }),
  698. smalltalk.IRNonLocalReturnInliner);
  699. smalltalk.addClass('InliningCodeGenerator', smalltalk.CodeGenerator, [], 'Compiler-Inlining');
  700. smalltalk.addMethod(
  701. "_compileNode_",
  702. smalltalk.method({
  703. selector: "compileNode:",
  704. fn: function (aNode) {
  705. var self=this;
  706. var ir=nil;
  707. var stream=nil;
  708. smalltalk.send(smalltalk.send(self, "_semanticAnalyzer", []), "_visit_", [aNode]);
  709. (ir=smalltalk.send(smalltalk.send(self, "_translator", []), "_visit_", [aNode]));
  710. smalltalk.send(smalltalk.send(self, "_inliner", []), "_visit_", [ir]);
  711. return (function($rec){smalltalk.send($rec, "_visit_", [ir]);return smalltalk.send($rec, "_contents", []);})(smalltalk.send(self, "_irTranslator", []));
  712. return self;}
  713. }),
  714. smalltalk.InliningCodeGenerator);
  715. smalltalk.addMethod(
  716. "_inliner",
  717. smalltalk.method({
  718. selector: "inliner",
  719. fn: function () {
  720. var self=this;
  721. return smalltalk.send((smalltalk.IRInliner || IRInliner), "_new", []);
  722. return self;}
  723. }),
  724. smalltalk.InliningCodeGenerator);
  725. smalltalk.addMethod(
  726. "_irTranslator",
  727. smalltalk.method({
  728. selector: "irTranslator",
  729. fn: function () {
  730. var self=this;
  731. return smalltalk.send((smalltalk.IRInliningJSTranslator || IRInliningJSTranslator), "_new", []);
  732. return self;}
  733. }),
  734. smalltalk.InliningCodeGenerator);