1
0

Compiler-IR.deploy.js 52 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113
  1. smalltalk.addPackage('Compiler-IR', {});
  2. smalltalk.addClass('IRASTTranslator', smalltalk.NodeVisitor, ['source', 'theClass', 'method', 'sequence', 'nextAlias'], 'Compiler-IR');
  3. smalltalk.addMethod(
  4. "_alias_",
  5. smalltalk.method({
  6. selector: "alias:",
  7. fn: function (aNode) {
  8. var self=this;
  9. var $1,$2,$3,$4;
  10. var variable;
  11. $1=smalltalk.send((smalltalk.IRVariable || IRVariable),"_new",[]);
  12. smalltalk.send($1,"_variable_",[smalltalk.send(smalltalk.send((smalltalk.AliasVar || AliasVar),"_new",[]),"_name_",[smalltalk.send("$","__comma",[smalltalk.send(self,"_nextAlias",[])])])]);
  13. $2=smalltalk.send($1,"_yourself",[]);
  14. variable=$2;
  15. $3=smalltalk.send((smalltalk.IRAssignment || IRAssignment),"_new",[]);
  16. smalltalk.send($3,"_add_",[variable]);
  17. smalltalk.send($3,"_add_",[smalltalk.send(self,"_visit_",[aNode])]);
  18. $4=smalltalk.send($3,"_yourself",[]);
  19. smalltalk.send(smalltalk.send(self,"_sequence",[]),"_add_",[$4]);
  20. smalltalk.send(smalltalk.send(smalltalk.send(self,"_method",[]),"_internalVariables",[]),"_add_",[variable]);
  21. return variable;
  22. }
  23. }),
  24. smalltalk.IRASTTranslator);
  25. smalltalk.addMethod(
  26. "_method",
  27. smalltalk.method({
  28. selector: "method",
  29. fn: function () {
  30. var self=this;
  31. return self["@method"];
  32. }
  33. }),
  34. smalltalk.IRASTTranslator);
  35. smalltalk.addMethod(
  36. "_method_",
  37. smalltalk.method({
  38. selector: "method:",
  39. fn: function (anIRMethod) {
  40. var self=this;
  41. self["@method"]=anIRMethod;
  42. return self;}
  43. }),
  44. smalltalk.IRASTTranslator);
  45. smalltalk.addMethod(
  46. "_nextAlias",
  47. smalltalk.method({
  48. selector: "nextAlias",
  49. fn: function () {
  50. var self=this;
  51. smalltalk.send(self["@nextAlias"],"_ifNil_",[(function(){
  52. self["@nextAlias"]=(0);
  53. return self["@nextAlias"];
  54. })]);
  55. self["@nextAlias"]=smalltalk.send(self["@nextAlias"],"__plus",[(1)]);
  56. return smalltalk.send(self["@nextAlias"],"_asString",[]);
  57. }
  58. }),
  59. smalltalk.IRASTTranslator);
  60. smalltalk.addMethod(
  61. "_sequence",
  62. smalltalk.method({
  63. selector: "sequence",
  64. fn: function () {
  65. var self=this;
  66. return self["@sequence"];
  67. }
  68. }),
  69. smalltalk.IRASTTranslator);
  70. smalltalk.addMethod(
  71. "_sequence_",
  72. smalltalk.method({
  73. selector: "sequence:",
  74. fn: function (anIRSequence) {
  75. var self=this;
  76. self["@sequence"]=anIRSequence;
  77. return self;}
  78. }),
  79. smalltalk.IRASTTranslator);
  80. smalltalk.addMethod(
  81. "_source",
  82. smalltalk.method({
  83. selector: "source",
  84. fn: function () {
  85. var self=this;
  86. return self["@source"];
  87. }
  88. }),
  89. smalltalk.IRASTTranslator);
  90. smalltalk.addMethod(
  91. "_source_",
  92. smalltalk.method({
  93. selector: "source:",
  94. fn: function (aString) {
  95. var self=this;
  96. self["@source"]=aString;
  97. return self;}
  98. }),
  99. smalltalk.IRASTTranslator);
  100. smalltalk.addMethod(
  101. "_theClass",
  102. smalltalk.method({
  103. selector: "theClass",
  104. fn: function () {
  105. var self=this;
  106. return self["@theClass"];
  107. }
  108. }),
  109. smalltalk.IRASTTranslator);
  110. smalltalk.addMethod(
  111. "_theClass_",
  112. smalltalk.method({
  113. selector: "theClass:",
  114. fn: function (aClass) {
  115. var self=this;
  116. self["@theClass"]=aClass;
  117. return self;}
  118. }),
  119. smalltalk.IRASTTranslator);
  120. smalltalk.addMethod(
  121. "_visitAssignmentNode_",
  122. smalltalk.method({
  123. selector: "visitAssignmentNode:",
  124. fn: function (aNode) {
  125. var self=this;
  126. var $1,$2;
  127. var left;
  128. var right;
  129. var assignment;
  130. right=smalltalk.send(self,"_visit_",[smalltalk.send(aNode,"_right",[])]);
  131. left=smalltalk.send(self,"_visit_",[smalltalk.send(aNode,"_left",[])]);
  132. $1=smalltalk.send((smalltalk.IRAssignment || IRAssignment),"_new",[]);
  133. smalltalk.send($1,"_add_",[left]);
  134. smalltalk.send($1,"_add_",[right]);
  135. $2=smalltalk.send($1,"_yourself",[]);
  136. smalltalk.send(smalltalk.send(self,"_sequence",[]),"_add_",[$2]);
  137. return left;
  138. }
  139. }),
  140. smalltalk.IRASTTranslator);
  141. smalltalk.addMethod(
  142. "_visitBlockNode_",
  143. smalltalk.method({
  144. selector: "visitBlockNode:",
  145. fn: function (aNode) {
  146. var self=this;
  147. var $1,$2,$3,$4;
  148. var closure;
  149. $1=smalltalk.send((smalltalk.IRClosure || IRClosure),"_new",[]);
  150. smalltalk.send($1,"_arguments_",[smalltalk.send(aNode,"_parameters",[])]);
  151. smalltalk.send($1,"_scope_",[smalltalk.send(aNode,"_scope",[])]);
  152. $2=smalltalk.send($1,"_yourself",[]);
  153. closure=$2;
  154. smalltalk.send(smalltalk.send(smalltalk.send(aNode,"_scope",[]),"_temps",[]),"_do_",[(function(each){
  155. $3=smalltalk.send((smalltalk.IRTempDeclaration || IRTempDeclaration),"_new",[]);
  156. smalltalk.send($3,"_name_",[smalltalk.send(each,"_name",[])]);
  157. $4=smalltalk.send($3,"_yourself",[]);
  158. return smalltalk.send(closure,"_add_",[$4]);
  159. })]);
  160. smalltalk.send(smalltalk.send(aNode,"_nodes",[]),"_do_",[(function(each){
  161. return smalltalk.send(closure,"_add_",[smalltalk.send(self,"_visit_",[each])]);
  162. })]);
  163. return closure;
  164. }
  165. }),
  166. smalltalk.IRASTTranslator);
  167. smalltalk.addMethod(
  168. "_visitBlockSequenceNode_",
  169. smalltalk.method({
  170. selector: "visitBlockSequenceNode:",
  171. fn: function (aNode) {
  172. var self=this;
  173. var $1,$2;
  174. return smalltalk.send(self,"_withSequence_do_",[smalltalk.send((smalltalk.IRBlockSequence || IRBlockSequence),"_new",[]),(function(){
  175. return smalltalk.send(smalltalk.send(aNode,"_nodes",[]),"_ifNotEmpty_",[(function(){
  176. smalltalk.send(smalltalk.send(smalltalk.send(aNode,"_nodes",[]),"_allButLast",[]),"_do_",[(function(each){
  177. return smalltalk.send(smalltalk.send(self,"_sequence",[]),"_add_",[smalltalk.send(self,"_visit_",[each])]);
  178. })]);
  179. return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aNode,"_nodes",[]),"_last",[]),"_isReturnNode",[]),"_ifFalse_ifTrue_",[(function(){
  180. $1=smalltalk.send((smalltalk.IRReturn || IRReturn),"_new",[]);
  181. smalltalk.send($1,"_add_",[smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(aNode,"_nodes",[]),"_last",[])])]);
  182. $2=smalltalk.send($1,"_yourself",[]);
  183. return smalltalk.send(smalltalk.send(self,"_sequence",[]),"_add_",[$2]);
  184. }),(function(){
  185. return smalltalk.send(smalltalk.send(self,"_sequence",[]),"_add_",[smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(aNode,"_nodes",[]),"_last",[])])]);
  186. })]);
  187. })]);
  188. })]);
  189. }
  190. }),
  191. smalltalk.IRASTTranslator);
  192. smalltalk.addMethod(
  193. "_visitCascadeNode_",
  194. smalltalk.method({
  195. selector: "visitCascadeNode:",
  196. fn: function (aNode) {
  197. var self=this;
  198. var alias;
  199. if(! smalltalk.assert(smalltalk.send(smalltalk.send(aNode,"_receiver",[]),"_isValueNode",[]))){
  200. alias=smalltalk.send(self,"_alias_",[smalltalk.send(aNode,"_receiver",[])]);
  201. alias;
  202. smalltalk.send(smalltalk.send(aNode,"_nodes",[]),"_do_",[(function(each){
  203. return smalltalk.send(each,"_receiver_",[smalltalk.send(smalltalk.send((smalltalk.VariableNode || VariableNode),"_new",[]),"_binding_",[smalltalk.send(alias,"_variable",[])])]);
  204. })]);
  205. };
  206. smalltalk.send(smalltalk.send(smalltalk.send(aNode,"_nodes",[]),"_allButLast",[]),"_do_",[(function(each){
  207. return smalltalk.send(smalltalk.send(self,"_sequence",[]),"_add_",[smalltalk.send(self,"_visit_",[each])]);
  208. })]);
  209. return smalltalk.send(self,"_alias_",[smalltalk.send(smalltalk.send(aNode,"_nodes",[]),"_last",[])]);
  210. }
  211. }),
  212. smalltalk.IRASTTranslator);
  213. smalltalk.addMethod(
  214. "_visitDynamicArrayNode_",
  215. smalltalk.method({
  216. selector: "visitDynamicArrayNode:",
  217. fn: function (aNode) {
  218. var self=this;
  219. var array;
  220. array=smalltalk.send((smalltalk.IRDynamicArray || IRDynamicArray),"_new",[]);
  221. smalltalk.send(smalltalk.send(aNode,"_nodes",[]),"_do_",[(function(each){
  222. return smalltalk.send(array,"_add_",[smalltalk.send(self,"_visit_",[each])]);
  223. })]);
  224. return array;
  225. }
  226. }),
  227. smalltalk.IRASTTranslator);
  228. smalltalk.addMethod(
  229. "_visitDynamicDictionaryNode_",
  230. smalltalk.method({
  231. selector: "visitDynamicDictionaryNode:",
  232. fn: function (aNode) {
  233. var self=this;
  234. var dictionary;
  235. dictionary=smalltalk.send((smalltalk.IRDynamicDictionary || IRDynamicDictionary),"_new",[]);
  236. smalltalk.send(smalltalk.send(aNode,"_nodes",[]),"_do_",[(function(each){
  237. return smalltalk.send(dictionary,"_add_",[smalltalk.send(self,"_visit_",[each])]);
  238. })]);
  239. return dictionary;
  240. }
  241. }),
  242. smalltalk.IRASTTranslator);
  243. smalltalk.addMethod(
  244. "_visitJSStatementNode_",
  245. smalltalk.method({
  246. selector: "visitJSStatementNode:",
  247. fn: function (aNode) {
  248. var self=this;
  249. var $1,$2;
  250. $1=smalltalk.send((smalltalk.IRVerbatim || IRVerbatim),"_new",[]);
  251. smalltalk.send($1,"_source_",[smalltalk.send(aNode,"_source",[])]);
  252. $2=smalltalk.send($1,"_yourself",[]);
  253. return $2;
  254. }
  255. }),
  256. smalltalk.IRASTTranslator);
  257. smalltalk.addMethod(
  258. "_visitMethodNode_",
  259. smalltalk.method({
  260. selector: "visitMethodNode:",
  261. fn: function (aNode) {
  262. var self=this;
  263. var $1,$2,$3,$4,$5,$6;
  264. $1=smalltalk.send((smalltalk.IRMethod || IRMethod),"_new",[]);
  265. smalltalk.send($1,"_source_",[smalltalk.send(self,"_source",[])]);
  266. smalltalk.send($1,"_arguments_",[smalltalk.send(aNode,"_arguments",[])]);
  267. smalltalk.send($1,"_selector_",[smalltalk.send(aNode,"_selector",[])]);
  268. smalltalk.send($1,"_messageSends_",[smalltalk.send(aNode,"_messageSends",[])]);
  269. smalltalk.send($1,"_classReferences_",[smalltalk.send(aNode,"_classReferences",[])]);
  270. smalltalk.send($1,"_scope_",[smalltalk.send(aNode,"_scope",[])]);
  271. $2=smalltalk.send($1,"_yourself",[]);
  272. smalltalk.send(self,"_method_",[$2]);
  273. smalltalk.send(smalltalk.send(smalltalk.send(aNode,"_scope",[]),"_temps",[]),"_do_",[(function(each){
  274. $3=smalltalk.send((smalltalk.IRTempDeclaration || IRTempDeclaration),"_new",[]);
  275. smalltalk.send($3,"_name_",[smalltalk.send(each,"_name",[])]);
  276. $4=smalltalk.send($3,"_yourself",[]);
  277. return smalltalk.send(smalltalk.send(self,"_method",[]),"_add_",[$4]);
  278. })]);
  279. smalltalk.send(smalltalk.send(aNode,"_nodes",[]),"_do_",[(function(each){
  280. return smalltalk.send(smalltalk.send(self,"_method",[]),"_add_",[smalltalk.send(self,"_visit_",[each])]);
  281. })]);
  282. if(! smalltalk.assert(smalltalk.send(smalltalk.send(aNode,"_scope",[]),"_hasLocalReturn",[]))){
  283. $5=smalltalk.send((smalltalk.IRVariable || IRVariable),"_new",[]);
  284. smalltalk.send($5,"_variable_",[smalltalk.send(smalltalk.send(smalltalk.send(aNode,"_scope",[]),"_pseudoVars",[]),"_at_",["self"])]);
  285. $6=smalltalk.send($5,"_yourself",[]);
  286. smalltalk.send(smalltalk.send(smalltalk.send(self,"_method",[]),"_add_",[smalltalk.send((smalltalk.IRReturn || IRReturn),"_new",[])]),"_add_",[$6]);
  287. };
  288. return smalltalk.send(self,"_method",[]);
  289. }
  290. }),
  291. smalltalk.IRASTTranslator);
  292. smalltalk.addMethod(
  293. "_visitReturnNode_",
  294. smalltalk.method({
  295. selector: "visitReturnNode:",
  296. fn: function (aNode) {
  297. var self=this;
  298. var return_=nil;
  299. (return_=((($receiver = smalltalk.send(aNode, "_nonLocalReturn", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send((smalltalk.IRNonLocalReturn || IRNonLocalReturn), "_new", []);})() : (function(){return smalltalk.send((smalltalk.IRReturn || IRReturn), "_new", []);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send((smalltalk.IRNonLocalReturn || IRNonLocalReturn), "_new", []);}), (function(){return smalltalk.send((smalltalk.IRReturn || IRReturn), "_new", []);})])));
  300. smalltalk.send(return_, "_scope_", [smalltalk.send(aNode, "_scope", [])]);
  301. smalltalk.send(smalltalk.send(aNode, "_nodes", []), "_do_", [(function(each){return smalltalk.send(return_, "_add_", [smalltalk.send(self, "_alias_", [each])]);})]);
  302. return return_;
  303. return self;}
  304. }),
  305. smalltalk.IRASTTranslator);
  306. smalltalk.addMethod(
  307. "_visitSendNode_",
  308. smalltalk.method({
  309. selector: "visitSendNode:",
  310. fn: function (aNode) {
  311. var self=this;
  312. var $1;
  313. var send;
  314. var receiver;
  315. var arguments;
  316. send=smalltalk.send((smalltalk.IRSend || IRSend),"_new",[]);
  317. smalltalk.send(send,"_selector_",[smalltalk.send(aNode,"_selector",[])]);
  318. $1=smalltalk.send(send,"_index_",[smalltalk.send(aNode,"_index",[])]);
  319. if(smalltalk.assert(smalltalk.send(aNode,"_superSend",[]))){
  320. smalltalk.send(send,"_classSend_",[smalltalk.send(smalltalk.send(self,"_theClass",[]),"_superclass",[])]);
  321. };
  322. receiver=smalltalk.send(smalltalk.send(smalltalk.send(aNode,"_receiver",[]),"_shouldBeInlined",[]),"_ifTrue_ifFalse_",[(function(){
  323. return smalltalk.send(self,"_alias_",[smalltalk.send(aNode,"_receiver",[])]);
  324. }),(function(){
  325. return smalltalk.send(self,"_visit_",[smalltalk.send(aNode,"_receiver",[])]);
  326. })]);
  327. arguments=smalltalk.send(smalltalk.send(aNode,"_arguments",[]),"_collect_",[(function(each){
  328. return smalltalk.send(smalltalk.send(each,"_shouldBeInlined",[]),"_ifTrue_ifFalse_",[(function(){
  329. return smalltalk.send(self,"_alias_",[each]);
  330. }),(function(){
  331. return smalltalk.send(self,"_visit_",[each]);
  332. })]);
  333. })]);
  334. smalltalk.send(send,"_add_",[receiver]);
  335. smalltalk.send(arguments,"_do_",[(function(each){
  336. return smalltalk.send(send,"_add_",[each]);
  337. })]);
  338. return send;
  339. }
  340. }),
  341. smalltalk.IRASTTranslator);
  342. smalltalk.addMethod(
  343. "_visitSequenceNode_",
  344. smalltalk.method({
  345. selector: "visitSequenceNode:",
  346. fn: function (aNode) {
  347. var self=this;
  348. return smalltalk.send(self,"_withSequence_do_",[smalltalk.send((smalltalk.IRSequence || IRSequence),"_new",[]),(function(){
  349. return smalltalk.send(smalltalk.send(aNode,"_nodes",[]),"_do_",[(function(each){
  350. var instruction;
  351. instruction=smalltalk.send(self,"_visit_",[each]);
  352. instruction;
  353. if(! smalltalk.assert(smalltalk.send(instruction,"_isVariable",[]))){
  354. return smalltalk.send(smalltalk.send(self,"_sequence",[]),"_add_",[instruction]);
  355. };
  356. })]);
  357. })]);
  358. }
  359. }),
  360. smalltalk.IRASTTranslator);
  361. smalltalk.addMethod(
  362. "_visitValueNode_",
  363. smalltalk.method({
  364. selector: "visitValueNode:",
  365. fn: function (aNode) {
  366. var self=this;
  367. var $1,$2;
  368. $1=smalltalk.send((smalltalk.IRValue || IRValue),"_new",[]);
  369. smalltalk.send($1,"_value_",[smalltalk.send(aNode,"_value",[])]);
  370. $2=smalltalk.send($1,"_yourself",[]);
  371. return $2;
  372. }
  373. }),
  374. smalltalk.IRASTTranslator);
  375. smalltalk.addMethod(
  376. "_visitVariableNode_",
  377. smalltalk.method({
  378. selector: "visitVariableNode:",
  379. fn: function (aNode) {
  380. var self=this;
  381. var $1,$2;
  382. $1=smalltalk.send((smalltalk.IRVariable || IRVariable),"_new",[]);
  383. smalltalk.send($1,"_variable_",[smalltalk.send(aNode,"_binding",[])]);
  384. $2=smalltalk.send($1,"_yourself",[]);
  385. return $2;
  386. }
  387. }),
  388. smalltalk.IRASTTranslator);
  389. smalltalk.addMethod(
  390. "_withSequence_do_",
  391. smalltalk.method({
  392. selector: "withSequence:do:",
  393. fn: function (aSequence, aBlock) {
  394. var self=this;
  395. var outerSequence;
  396. outerSequence=smalltalk.send(self,"_sequence",[]);
  397. smalltalk.send(self,"_sequence_",[aSequence]);
  398. smalltalk.send(aBlock,"_value",[]);
  399. smalltalk.send(self,"_sequence_",[outerSequence]);
  400. return aSequence;
  401. }
  402. }),
  403. smalltalk.IRASTTranslator);
  404. smalltalk.addClass('IRInstruction', smalltalk.Object, ['parent', 'instructions'], 'Compiler-IR');
  405. smalltalk.addMethod(
  406. "_accept_",
  407. smalltalk.method({
  408. selector: "accept:",
  409. fn: function (aVisitor) {
  410. var self=this;
  411. return smalltalk.send(aVisitor,"_visitIRInstruction_",[self]);
  412. }
  413. }),
  414. smalltalk.IRInstruction);
  415. smalltalk.addMethod(
  416. "_add_",
  417. smalltalk.method({
  418. selector: "add:",
  419. fn: function (anObject) {
  420. var self=this;
  421. smalltalk.send(anObject,"_parent_",[self]);
  422. return smalltalk.send(smalltalk.send(self,"_instructions",[]),"_add_",[anObject]);
  423. }
  424. }),
  425. smalltalk.IRInstruction);
  426. smalltalk.addMethod(
  427. "_canBeAssigned",
  428. smalltalk.method({
  429. selector: "canBeAssigned",
  430. fn: function () {
  431. var self=this;
  432. return true;
  433. }
  434. }),
  435. smalltalk.IRInstruction);
  436. smalltalk.addMethod(
  437. "_instructions",
  438. smalltalk.method({
  439. selector: "instructions",
  440. fn: function () {
  441. var self=this;
  442. return smalltalk.send(self["@instructions"],"_ifNil_",[(function(){
  443. self["@instructions"]=smalltalk.send((smalltalk.OrderedCollection || OrderedCollection),"_new",[]);
  444. return self["@instructions"];
  445. })]);
  446. }
  447. }),
  448. smalltalk.IRInstruction);
  449. smalltalk.addMethod(
  450. "_isClosure",
  451. smalltalk.method({
  452. selector: "isClosure",
  453. fn: function () {
  454. var self=this;
  455. return false;
  456. }
  457. }),
  458. smalltalk.IRInstruction);
  459. smalltalk.addMethod(
  460. "_isInlined",
  461. smalltalk.method({
  462. selector: "isInlined",
  463. fn: function () {
  464. var self=this;
  465. return false;
  466. }
  467. }),
  468. smalltalk.IRInstruction);
  469. smalltalk.addMethod(
  470. "_isLocalReturn",
  471. smalltalk.method({
  472. selector: "isLocalReturn",
  473. fn: function () {
  474. var self=this;
  475. return false;
  476. }
  477. }),
  478. smalltalk.IRInstruction);
  479. smalltalk.addMethod(
  480. "_isReturn",
  481. smalltalk.method({
  482. selector: "isReturn",
  483. fn: function () {
  484. var self=this;
  485. return false;
  486. }
  487. }),
  488. smalltalk.IRInstruction);
  489. smalltalk.addMethod(
  490. "_isSend",
  491. smalltalk.method({
  492. selector: "isSend",
  493. fn: function () {
  494. var self=this;
  495. return false;
  496. }
  497. }),
  498. smalltalk.IRInstruction);
  499. smalltalk.addMethod(
  500. "_isSequence",
  501. smalltalk.method({
  502. selector: "isSequence",
  503. fn: function () {
  504. var self=this;
  505. return false;
  506. }
  507. }),
  508. smalltalk.IRInstruction);
  509. smalltalk.addMethod(
  510. "_isTempDeclaration",
  511. smalltalk.method({
  512. selector: "isTempDeclaration",
  513. fn: function () {
  514. var self=this;
  515. return false;
  516. }
  517. }),
  518. smalltalk.IRInstruction);
  519. smalltalk.addMethod(
  520. "_isVariable",
  521. smalltalk.method({
  522. selector: "isVariable",
  523. fn: function () {
  524. var self=this;
  525. return false;
  526. }
  527. }),
  528. smalltalk.IRInstruction);
  529. smalltalk.addMethod(
  530. "_parent",
  531. smalltalk.method({
  532. selector: "parent",
  533. fn: function () {
  534. var self=this;
  535. return self["@parent"];
  536. }
  537. }),
  538. smalltalk.IRInstruction);
  539. smalltalk.addMethod(
  540. "_parent_",
  541. smalltalk.method({
  542. selector: "parent:",
  543. fn: function (anIRInstruction) {
  544. var self=this;
  545. self["@parent"]=anIRInstruction;
  546. return self;}
  547. }),
  548. smalltalk.IRInstruction);
  549. smalltalk.addMethod(
  550. "_remove",
  551. smalltalk.method({
  552. selector: "remove",
  553. fn: function () {
  554. var self=this;
  555. smalltalk.send(smalltalk.send(self,"_parent",[]),"_remove_",[self]);
  556. return self;}
  557. }),
  558. smalltalk.IRInstruction);
  559. smalltalk.addMethod(
  560. "_remove_",
  561. smalltalk.method({
  562. selector: "remove:",
  563. fn: function (anIRInstruction) {
  564. var self=this;
  565. smalltalk.send(smalltalk.send(self,"_instructions",[]),"_remove_",[anIRInstruction]);
  566. return self;}
  567. }),
  568. smalltalk.IRInstruction);
  569. smalltalk.addMethod(
  570. "_replace_with_",
  571. smalltalk.method({
  572. selector: "replace:with:",
  573. fn: function (anIRInstruction, anotherIRInstruction) {
  574. var self=this;
  575. smalltalk.send(anotherIRInstruction,"_parent_",[self]);
  576. smalltalk.send(smalltalk.send(self,"_instructions",[]),"_at_put_",[smalltalk.send(smalltalk.send(self,"_instructions",[]),"_indexOf_",[anIRInstruction]),anotherIRInstruction]);
  577. return self;}
  578. }),
  579. smalltalk.IRInstruction);
  580. smalltalk.addMethod(
  581. "_replaceWith_",
  582. smalltalk.method({
  583. selector: "replaceWith:",
  584. fn: function (anIRInstruction) {
  585. var self=this;
  586. smalltalk.send(smalltalk.send(self,"_parent",[]),"_replace_with_",[self,anIRInstruction]);
  587. return self;}
  588. }),
  589. smalltalk.IRInstruction);
  590. smalltalk.addMethod(
  591. "_on_",
  592. smalltalk.method({
  593. selector: "on:",
  594. fn: function (aBuilder) {
  595. var self=this;
  596. var $1,$2;
  597. $1=smalltalk.send(self,"_new",[]);
  598. smalltalk.send($1,"_builder_",[aBuilder]);
  599. $2=smalltalk.send($1,"_yourself",[]);
  600. return $2;
  601. }
  602. }),
  603. smalltalk.IRInstruction.klass);
  604. smalltalk.addClass('IRAssignment', smalltalk.IRInstruction, [], 'Compiler-IR');
  605. smalltalk.addMethod(
  606. "_accept_",
  607. smalltalk.method({
  608. selector: "accept:",
  609. fn: function (aVisitor) {
  610. var self=this;
  611. return smalltalk.send(aVisitor,"_visitIRAssignment_",[self]);
  612. }
  613. }),
  614. smalltalk.IRAssignment);
  615. smalltalk.addClass('IRDynamicArray', smalltalk.IRInstruction, [], 'Compiler-IR');
  616. smalltalk.addMethod(
  617. "_accept_",
  618. smalltalk.method({
  619. selector: "accept:",
  620. fn: function (aVisitor) {
  621. var self=this;
  622. return smalltalk.send(aVisitor,"_visitIRDynamicArray_",[self]);
  623. }
  624. }),
  625. smalltalk.IRDynamicArray);
  626. smalltalk.addClass('IRDynamicDictionary', smalltalk.IRInstruction, [], 'Compiler-IR');
  627. smalltalk.addMethod(
  628. "_accept_",
  629. smalltalk.method({
  630. selector: "accept:",
  631. fn: function (aVisitor) {
  632. var self=this;
  633. return smalltalk.send(aVisitor,"_visitIRDynamicDictionary_",[self]);
  634. }
  635. }),
  636. smalltalk.IRDynamicDictionary);
  637. smalltalk.addClass('IRScopedInstruction', smalltalk.IRInstruction, ['scope'], 'Compiler-IR');
  638. smalltalk.addMethod(
  639. "_scope",
  640. smalltalk.method({
  641. selector: "scope",
  642. fn: function () {
  643. var self=this;
  644. return self["@scope"];
  645. }
  646. }),
  647. smalltalk.IRScopedInstruction);
  648. smalltalk.addMethod(
  649. "_scope_",
  650. smalltalk.method({
  651. selector: "scope:",
  652. fn: function (aScope) {
  653. var self=this;
  654. self["@scope"]=aScope;
  655. return self;}
  656. }),
  657. smalltalk.IRScopedInstruction);
  658. smalltalk.addClass('IRClosure', smalltalk.IRScopedInstruction, ['arguments'], 'Compiler-IR');
  659. smalltalk.addMethod(
  660. "_accept_",
  661. smalltalk.method({
  662. selector: "accept:",
  663. fn: function (aVisitor) {
  664. var self=this;
  665. return smalltalk.send(aVisitor,"_visitIRClosure_",[self]);
  666. }
  667. }),
  668. smalltalk.IRClosure);
  669. smalltalk.addMethod(
  670. "_arguments",
  671. smalltalk.method({
  672. selector: "arguments",
  673. fn: function () {
  674. var self=this;
  675. return smalltalk.send(self["@arguments"],"_ifNil_",[(function(){
  676. return [];
  677. })]);
  678. }
  679. }),
  680. smalltalk.IRClosure);
  681. smalltalk.addMethod(
  682. "_arguments_",
  683. smalltalk.method({
  684. selector: "arguments:",
  685. fn: function (aCollection) {
  686. var self=this;
  687. self["@arguments"]=aCollection;
  688. return self;}
  689. }),
  690. smalltalk.IRClosure);
  691. smalltalk.addMethod(
  692. "_isClosure",
  693. smalltalk.method({
  694. selector: "isClosure",
  695. fn: function () {
  696. var self=this;
  697. return true;
  698. }
  699. }),
  700. smalltalk.IRClosure);
  701. smalltalk.addMethod(
  702. "_scope_",
  703. smalltalk.method({
  704. selector: "scope:",
  705. fn: function (aScope) {
  706. var self=this;
  707. smalltalk.send(self,"_scope_",[aScope],smalltalk.IRScopedInstruction);
  708. smalltalk.send(aScope,"_instruction_",[self]);
  709. return self;}
  710. }),
  711. smalltalk.IRClosure);
  712. smalltalk.addMethod(
  713. "_sequence",
  714. smalltalk.method({
  715. selector: "sequence",
  716. fn: function () {
  717. var self=this;
  718. return smalltalk.send(smalltalk.send(self,"_instructions",[]),"_last",[]);
  719. }
  720. }),
  721. smalltalk.IRClosure);
  722. smalltalk.addClass('IRMethod', smalltalk.IRScopedInstruction, ['source', 'selector', 'classReferences', 'messageSends', 'arguments', 'internalVariables'], 'Compiler-IR');
  723. smalltalk.addMethod(
  724. "_accept_",
  725. smalltalk.method({
  726. selector: "accept:",
  727. fn: function (aVisitor) {
  728. var self=this;
  729. return smalltalk.send(aVisitor,"_visitIRMethod_",[self]);
  730. }
  731. }),
  732. smalltalk.IRMethod);
  733. smalltalk.addMethod(
  734. "_arguments",
  735. smalltalk.method({
  736. selector: "arguments",
  737. fn: function () {
  738. var self=this;
  739. return self["@arguments"];
  740. }
  741. }),
  742. smalltalk.IRMethod);
  743. smalltalk.addMethod(
  744. "_arguments_",
  745. smalltalk.method({
  746. selector: "arguments:",
  747. fn: function (aCollection) {
  748. var self=this;
  749. self["@arguments"]=aCollection;
  750. return self;}
  751. }),
  752. smalltalk.IRMethod);
  753. smalltalk.addMethod(
  754. "_classReferences",
  755. smalltalk.method({
  756. selector: "classReferences",
  757. fn: function () {
  758. var self=this;
  759. return self["@classReferences"];
  760. }
  761. }),
  762. smalltalk.IRMethod);
  763. smalltalk.addMethod(
  764. "_classReferences_",
  765. smalltalk.method({
  766. selector: "classReferences:",
  767. fn: function (aCollection) {
  768. var self=this;
  769. self["@classReferences"]=aCollection;
  770. return self;}
  771. }),
  772. smalltalk.IRMethod);
  773. smalltalk.addMethod(
  774. "_internalVariables",
  775. smalltalk.method({
  776. selector: "internalVariables",
  777. fn: function () {
  778. var self=this;
  779. return smalltalk.send(self["@internalVariables"],"_ifNil_",[(function(){
  780. self["@internalVariables"]=smalltalk.send((smalltalk.Set || Set),"_new",[]);
  781. return self["@internalVariables"];
  782. })]);
  783. }
  784. }),
  785. smalltalk.IRMethod);
  786. smalltalk.addMethod(
  787. "_messageSends",
  788. smalltalk.method({
  789. selector: "messageSends",
  790. fn: function () {
  791. var self=this;
  792. return self["@messageSends"];
  793. }
  794. }),
  795. smalltalk.IRMethod);
  796. smalltalk.addMethod(
  797. "_messageSends_",
  798. smalltalk.method({
  799. selector: "messageSends:",
  800. fn: function (aCollection) {
  801. var self=this;
  802. self["@messageSends"]=aCollection;
  803. return self;}
  804. }),
  805. smalltalk.IRMethod);
  806. smalltalk.addMethod(
  807. "_scope_",
  808. smalltalk.method({
  809. selector: "scope:",
  810. fn: function (aScope) {
  811. var self=this;
  812. smalltalk.send(self,"_scope_",[aScope],smalltalk.IRScopedInstruction);
  813. smalltalk.send(aScope,"_instruction_",[self]);
  814. return self;}
  815. }),
  816. smalltalk.IRMethod);
  817. smalltalk.addMethod(
  818. "_selector",
  819. smalltalk.method({
  820. selector: "selector",
  821. fn: function () {
  822. var self=this;
  823. return self["@selector"];
  824. }
  825. }),
  826. smalltalk.IRMethod);
  827. smalltalk.addMethod(
  828. "_selector_",
  829. smalltalk.method({
  830. selector: "selector:",
  831. fn: function (aString) {
  832. var self=this;
  833. self["@selector"]=aString;
  834. return self;}
  835. }),
  836. smalltalk.IRMethod);
  837. smalltalk.addMethod(
  838. "_source",
  839. smalltalk.method({
  840. selector: "source",
  841. fn: function () {
  842. var self=this;
  843. return self["@source"];
  844. }
  845. }),
  846. smalltalk.IRMethod);
  847. smalltalk.addMethod(
  848. "_source_",
  849. smalltalk.method({
  850. selector: "source:",
  851. fn: function (aString) {
  852. var self=this;
  853. self["@source"]=aString;
  854. return self;}
  855. }),
  856. smalltalk.IRMethod);
  857. smalltalk.addClass('IRReturn', smalltalk.IRScopedInstruction, [], 'Compiler-IR');
  858. smalltalk.addMethod(
  859. "_accept_",
  860. smalltalk.method({
  861. selector: "accept:",
  862. fn: function (aVisitor) {
  863. var self=this;
  864. return smalltalk.send(aVisitor,"_visitIRReturn_",[self]);
  865. }
  866. }),
  867. smalltalk.IRReturn);
  868. smalltalk.addMethod(
  869. "_canBeAssigned",
  870. smalltalk.method({
  871. selector: "canBeAssigned",
  872. fn: function () {
  873. var self=this;
  874. return false;
  875. }
  876. }),
  877. smalltalk.IRReturn);
  878. smalltalk.addMethod(
  879. "_isLocalReturn",
  880. smalltalk.method({
  881. selector: "isLocalReturn",
  882. fn: function () {
  883. var self=this;
  884. return smalltalk.send(self,"_isReturn",[]);
  885. }
  886. }),
  887. smalltalk.IRReturn);
  888. smalltalk.addMethod(
  889. "_isNonLocalReturn",
  890. smalltalk.method({
  891. selector: "isNonLocalReturn",
  892. fn: function () {
  893. var self=this;
  894. return smalltalk.send(smalltalk.send(self,"_isLocalReturn",[]),"_not",[]);
  895. }
  896. }),
  897. smalltalk.IRReturn);
  898. smalltalk.addMethod(
  899. "_isReturn",
  900. smalltalk.method({
  901. selector: "isReturn",
  902. fn: function () {
  903. var self=this;
  904. return true;
  905. }
  906. }),
  907. smalltalk.IRReturn);
  908. smalltalk.addClass('IRNonLocalReturn', smalltalk.IRReturn, [], 'Compiler-IR');
  909. smalltalk.addMethod(
  910. "_accept_",
  911. smalltalk.method({
  912. selector: "accept:",
  913. fn: function (aVisitor) {
  914. var self=this;
  915. return smalltalk.send(aVisitor,"_visitIRNonLocalReturn_",[self]);
  916. }
  917. }),
  918. smalltalk.IRNonLocalReturn);
  919. smalltalk.addMethod(
  920. "_isLocalReturn",
  921. smalltalk.method({
  922. selector: "isLocalReturn",
  923. fn: function () {
  924. var self=this;
  925. return false;
  926. }
  927. }),
  928. smalltalk.IRNonLocalReturn);
  929. smalltalk.addClass('IRSend', smalltalk.IRInstruction, ['selector', 'classSend', 'index'], 'Compiler-IR');
  930. smalltalk.addMethod(
  931. "_accept_",
  932. smalltalk.method({
  933. selector: "accept:",
  934. fn: function (aVisitor) {
  935. var self=this;
  936. return smalltalk.send(aVisitor,"_visitIRSend_",[self]);
  937. }
  938. }),
  939. smalltalk.IRSend);
  940. smalltalk.addMethod(
  941. "_classSend",
  942. smalltalk.method({
  943. selector: "classSend",
  944. fn: function () {
  945. var self=this;
  946. return self["@classSend"];
  947. }
  948. }),
  949. smalltalk.IRSend);
  950. smalltalk.addMethod(
  951. "_classSend_",
  952. smalltalk.method({
  953. selector: "classSend:",
  954. fn: function (aClass) {
  955. var self=this;
  956. self["@classSend"]=aClass;
  957. return self;}
  958. }),
  959. smalltalk.IRSend);
  960. smalltalk.addMethod(
  961. "_index",
  962. smalltalk.method({
  963. selector: "index",
  964. fn: function () {
  965. var self=this;
  966. return self["@index"];
  967. }
  968. }),
  969. smalltalk.IRSend);
  970. smalltalk.addMethod(
  971. "_index_",
  972. smalltalk.method({
  973. selector: "index:",
  974. fn: function (anInteger) {
  975. var self=this;
  976. self["@index"]=anInteger;
  977. return self;}
  978. }),
  979. smalltalk.IRSend);
  980. smalltalk.addMethod(
  981. "_isSend",
  982. smalltalk.method({
  983. selector: "isSend",
  984. fn: function () {
  985. var self=this;
  986. return true;
  987. }
  988. }),
  989. smalltalk.IRSend);
  990. smalltalk.addMethod(
  991. "_selector",
  992. smalltalk.method({
  993. selector: "selector",
  994. fn: function () {
  995. var self=this;
  996. return self["@selector"];
  997. }
  998. }),
  999. smalltalk.IRSend);
  1000. smalltalk.addMethod(
  1001. "_selector_",
  1002. smalltalk.method({
  1003. selector: "selector:",
  1004. fn: function (aString) {
  1005. var self=this;
  1006. self["@selector"]=aString;
  1007. return self;}
  1008. }),
  1009. smalltalk.IRSend);
  1010. smalltalk.addClass('IRSequence', smalltalk.IRInstruction, [], 'Compiler-IR');
  1011. smalltalk.addMethod(
  1012. "_accept_",
  1013. smalltalk.method({
  1014. selector: "accept:",
  1015. fn: function (aVisitor) {
  1016. var self=this;
  1017. return smalltalk.send(aVisitor,"_visitIRSequence_",[self]);
  1018. }
  1019. }),
  1020. smalltalk.IRSequence);
  1021. smalltalk.addMethod(
  1022. "_isSequence",
  1023. smalltalk.method({
  1024. selector: "isSequence",
  1025. fn: function () {
  1026. var self=this;
  1027. return true;
  1028. }
  1029. }),
  1030. smalltalk.IRSequence);
  1031. smalltalk.addClass('IRBlockSequence', smalltalk.IRSequence, [], 'Compiler-IR');
  1032. smalltalk.addMethod(
  1033. "_accept_",
  1034. smalltalk.method({
  1035. selector: "accept:",
  1036. fn: function (aVisitor) {
  1037. var self=this;
  1038. return smalltalk.send(aVisitor,"_visitIRBlockSequence_",[self]);
  1039. }
  1040. }),
  1041. smalltalk.IRBlockSequence);
  1042. smalltalk.addClass('IRTempDeclaration', smalltalk.IRInstruction, ['name'], 'Compiler-IR');
  1043. smalltalk.addMethod(
  1044. "_accept_",
  1045. smalltalk.method({
  1046. selector: "accept:",
  1047. fn: function (aVisitor) {
  1048. var self=this;
  1049. return smalltalk.send(aVisitor,"_visitIRTempDeclaration_",[self]);
  1050. }
  1051. }),
  1052. smalltalk.IRTempDeclaration);
  1053. smalltalk.addMethod(
  1054. "_isTempDeclaration",
  1055. smalltalk.method({
  1056. selector: "isTempDeclaration",
  1057. fn: function () {
  1058. var self=this;
  1059. return true;
  1060. }
  1061. }),
  1062. smalltalk.IRTempDeclaration);
  1063. smalltalk.addMethod(
  1064. "_name",
  1065. smalltalk.method({
  1066. selector: "name",
  1067. fn: function () {
  1068. var self=this;
  1069. return self["@name"];
  1070. }
  1071. }),
  1072. smalltalk.IRTempDeclaration);
  1073. smalltalk.addMethod(
  1074. "_name_",
  1075. smalltalk.method({
  1076. selector: "name:",
  1077. fn: function (aString) {
  1078. var self=this;
  1079. self["@name"]=aString;
  1080. return self;}
  1081. }),
  1082. smalltalk.IRTempDeclaration);
  1083. smalltalk.addClass('IRValue', smalltalk.IRInstruction, ['value'], 'Compiler-IR');
  1084. smalltalk.addMethod(
  1085. "_accept_",
  1086. smalltalk.method({
  1087. selector: "accept:",
  1088. fn: function (aVisitor) {
  1089. var self=this;
  1090. return smalltalk.send(aVisitor,"_visitIRValue_",[self]);
  1091. }
  1092. }),
  1093. smalltalk.IRValue);
  1094. smalltalk.addMethod(
  1095. "_value",
  1096. smalltalk.method({
  1097. selector: "value",
  1098. fn: function () {
  1099. var self=this;
  1100. return self["@value"];
  1101. }
  1102. }),
  1103. smalltalk.IRValue);
  1104. smalltalk.addMethod(
  1105. "_value_",
  1106. smalltalk.method({
  1107. selector: "value:",
  1108. fn: function (aString) {
  1109. var self=this;
  1110. self["@value"]=aString;
  1111. return self;}
  1112. }),
  1113. smalltalk.IRValue);
  1114. smalltalk.addClass('IRVariable', smalltalk.IRInstruction, ['variable'], 'Compiler-IR');
  1115. smalltalk.addMethod(
  1116. "_accept_",
  1117. smalltalk.method({
  1118. selector: "accept:",
  1119. fn: function (aVisitor) {
  1120. var self=this;
  1121. return smalltalk.send(aVisitor,"_visitIRVariable_",[self]);
  1122. }
  1123. }),
  1124. smalltalk.IRVariable);
  1125. smalltalk.addMethod(
  1126. "_isVariable",
  1127. smalltalk.method({
  1128. selector: "isVariable",
  1129. fn: function () {
  1130. var self=this;
  1131. return true;
  1132. }
  1133. }),
  1134. smalltalk.IRVariable);
  1135. smalltalk.addMethod(
  1136. "_variable",
  1137. smalltalk.method({
  1138. selector: "variable",
  1139. fn: function () {
  1140. var self=this;
  1141. return self["@variable"];
  1142. }
  1143. }),
  1144. smalltalk.IRVariable);
  1145. smalltalk.addMethod(
  1146. "_variable_",
  1147. smalltalk.method({
  1148. selector: "variable:",
  1149. fn: function (aScopeVariable) {
  1150. var self=this;
  1151. self["@variable"]=aScopeVariable;
  1152. return self;}
  1153. }),
  1154. smalltalk.IRVariable);
  1155. smalltalk.addClass('IRVerbatim', smalltalk.IRInstruction, ['source'], 'Compiler-IR');
  1156. smalltalk.addMethod(
  1157. "_accept_",
  1158. smalltalk.method({
  1159. selector: "accept:",
  1160. fn: function (aVisitor) {
  1161. var self=this;
  1162. return smalltalk.send(aVisitor,"_visitIRVerbatim_",[self]);
  1163. }
  1164. }),
  1165. smalltalk.IRVerbatim);
  1166. smalltalk.addMethod(
  1167. "_source",
  1168. smalltalk.method({
  1169. selector: "source",
  1170. fn: function () {
  1171. var self=this;
  1172. return self["@source"];
  1173. }
  1174. }),
  1175. smalltalk.IRVerbatim);
  1176. smalltalk.addMethod(
  1177. "_source_",
  1178. smalltalk.method({
  1179. selector: "source:",
  1180. fn: function (aString) {
  1181. var self=this;
  1182. self["@source"]=aString;
  1183. return self;}
  1184. }),
  1185. smalltalk.IRVerbatim);
  1186. smalltalk.addClass('IRVisitor', smalltalk.Object, [], 'Compiler-IR');
  1187. smalltalk.addMethod(
  1188. "_visit_",
  1189. smalltalk.method({
  1190. selector: "visit:",
  1191. fn: function (anIRInstruction) {
  1192. var self=this;
  1193. return smalltalk.send(anIRInstruction,"_accept_",[self]);
  1194. }
  1195. }),
  1196. smalltalk.IRVisitor);
  1197. smalltalk.addMethod(
  1198. "_visitIRAssignment_",
  1199. smalltalk.method({
  1200. selector: "visitIRAssignment:",
  1201. fn: function (anIRAssignment) {
  1202. var self=this;
  1203. return smalltalk.send(self,"_visitIRInstruction_",[anIRAssignment]);
  1204. }
  1205. }),
  1206. smalltalk.IRVisitor);
  1207. smalltalk.addMethod(
  1208. "_visitIRBlockSequence_",
  1209. smalltalk.method({
  1210. selector: "visitIRBlockSequence:",
  1211. fn: function (anIRBlockSequence) {
  1212. var self=this;
  1213. return smalltalk.send(self,"_visitIRSequence_",[anIRBlockSequence]);
  1214. }
  1215. }),
  1216. smalltalk.IRVisitor);
  1217. smalltalk.addMethod(
  1218. "_visitIRClosure_",
  1219. smalltalk.method({
  1220. selector: "visitIRClosure:",
  1221. fn: function (anIRClosure) {
  1222. var self=this;
  1223. return smalltalk.send(self,"_visitIRInstruction_",[anIRClosure]);
  1224. }
  1225. }),
  1226. smalltalk.IRVisitor);
  1227. smalltalk.addMethod(
  1228. "_visitIRDynamicArray_",
  1229. smalltalk.method({
  1230. selector: "visitIRDynamicArray:",
  1231. fn: function (anIRDynamicArray) {
  1232. var self=this;
  1233. return smalltalk.send(self,"_visitIRInstruction_",[anIRDynamicArray]);
  1234. }
  1235. }),
  1236. smalltalk.IRVisitor);
  1237. smalltalk.addMethod(
  1238. "_visitIRDynamicDictionary_",
  1239. smalltalk.method({
  1240. selector: "visitIRDynamicDictionary:",
  1241. fn: function (anIRDynamicDictionary) {
  1242. var self=this;
  1243. return smalltalk.send(self,"_visitIRInstruction_",[anIRDynamicDictionary]);
  1244. }
  1245. }),
  1246. smalltalk.IRVisitor);
  1247. smalltalk.addMethod(
  1248. "_visitIRInstruction_",
  1249. smalltalk.method({
  1250. selector: "visitIRInstruction:",
  1251. fn: function (anIRInstruction) {
  1252. var self=this;
  1253. smalltalk.send(smalltalk.send(anIRInstruction,"_instructions",[]),"_do_",[(function(each){
  1254. return smalltalk.send(self,"_visit_",[each]);
  1255. })]);
  1256. return anIRInstruction;
  1257. }
  1258. }),
  1259. smalltalk.IRVisitor);
  1260. smalltalk.addMethod(
  1261. "_visitIRMethod_",
  1262. smalltalk.method({
  1263. selector: "visitIRMethod:",
  1264. fn: function (anIRMethod) {
  1265. var self=this;
  1266. return smalltalk.send(self,"_visitIRInstruction_",[anIRMethod]);
  1267. }
  1268. }),
  1269. smalltalk.IRVisitor);
  1270. smalltalk.addMethod(
  1271. "_visitIRNonLocalReturn_",
  1272. smalltalk.method({
  1273. selector: "visitIRNonLocalReturn:",
  1274. fn: function (anIRNonLocalReturn) {
  1275. var self=this;
  1276. return smalltalk.send(self,"_visitIRInstruction_",[anIRNonLocalReturn]);
  1277. }
  1278. }),
  1279. smalltalk.IRVisitor);
  1280. smalltalk.addMethod(
  1281. "_visitIRNonLocalReturnHandling_",
  1282. smalltalk.method({
  1283. selector: "visitIRNonLocalReturnHandling:",
  1284. fn: function (anIRNonLocalReturnHandling) {
  1285. var self=this;
  1286. return smalltalk.send(self,"_visitIRInstruction_",[anIRNonLocalReturnHandling]);
  1287. }
  1288. }),
  1289. smalltalk.IRVisitor);
  1290. smalltalk.addMethod(
  1291. "_visitIRReturn_",
  1292. smalltalk.method({
  1293. selector: "visitIRReturn:",
  1294. fn: function (anIRReturn) {
  1295. var self=this;
  1296. return smalltalk.send(self,"_visitIRInstruction_",[anIRReturn]);
  1297. }
  1298. }),
  1299. smalltalk.IRVisitor);
  1300. smalltalk.addMethod(
  1301. "_visitIRSend_",
  1302. smalltalk.method({
  1303. selector: "visitIRSend:",
  1304. fn: function (anIRSend) {
  1305. var self=this;
  1306. return smalltalk.send(self,"_visitIRInstruction_",[anIRSend]);
  1307. }
  1308. }),
  1309. smalltalk.IRVisitor);
  1310. smalltalk.addMethod(
  1311. "_visitIRSequence_",
  1312. smalltalk.method({
  1313. selector: "visitIRSequence:",
  1314. fn: function (anIRSequence) {
  1315. var self=this;
  1316. return smalltalk.send(self,"_visitIRInstruction_",[anIRSequence]);
  1317. }
  1318. }),
  1319. smalltalk.IRVisitor);
  1320. smalltalk.addMethod(
  1321. "_visitIRTempDeclaration_",
  1322. smalltalk.method({
  1323. selector: "visitIRTempDeclaration:",
  1324. fn: function (anIRTempDeclaration) {
  1325. var self=this;
  1326. return smalltalk.send(self,"_visitIRInstruction_",[anIRTempDeclaration]);
  1327. }
  1328. }),
  1329. smalltalk.IRVisitor);
  1330. smalltalk.addMethod(
  1331. "_visitIRValue_",
  1332. smalltalk.method({
  1333. selector: "visitIRValue:",
  1334. fn: function (anIRValue) {
  1335. var self=this;
  1336. return smalltalk.send(self,"_visitIRInstruction_",[anIRValue]);
  1337. }
  1338. }),
  1339. smalltalk.IRVisitor);
  1340. smalltalk.addMethod(
  1341. "_visitIRVariable_",
  1342. smalltalk.method({
  1343. selector: "visitIRVariable:",
  1344. fn: function (anIRVariable) {
  1345. var self=this;
  1346. return smalltalk.send(self,"_visitIRInstruction_",[anIRVariable]);
  1347. }
  1348. }),
  1349. smalltalk.IRVisitor);
  1350. smalltalk.addMethod(
  1351. "_visitIRVerbatim_",
  1352. smalltalk.method({
  1353. selector: "visitIRVerbatim:",
  1354. fn: function (anIRVerbatim) {
  1355. var self=this;
  1356. return smalltalk.send(self,"_visitIRInstruction_",[anIRVerbatim]);
  1357. }
  1358. }),
  1359. smalltalk.IRVisitor);
  1360. smalltalk.addClass('IRJSTranslator', smalltalk.IRVisitor, ['stream'], 'Compiler-IR');
  1361. smalltalk.addMethod(
  1362. "_contents",
  1363. smalltalk.method({
  1364. selector: "contents",
  1365. fn: function () {
  1366. var self=this;
  1367. return smalltalk.send(smalltalk.send(self,"_stream",[]),"_contents",[]);
  1368. }
  1369. }),
  1370. smalltalk.IRJSTranslator);
  1371. smalltalk.addMethod(
  1372. "_initialize",
  1373. smalltalk.method({
  1374. selector: "initialize",
  1375. fn: function () {
  1376. var self=this;
  1377. smalltalk.send(self,"_initialize",[],smalltalk.IRVisitor);
  1378. self["@stream"]=smalltalk.send((smalltalk.JSStream || JSStream),"_new",[]);
  1379. return self;}
  1380. }),
  1381. smalltalk.IRJSTranslator);
  1382. smalltalk.addMethod(
  1383. "_stream",
  1384. smalltalk.method({
  1385. selector: "stream",
  1386. fn: function () {
  1387. var self=this;
  1388. return self["@stream"];
  1389. }
  1390. }),
  1391. smalltalk.IRJSTranslator);
  1392. smalltalk.addMethod(
  1393. "_stream_",
  1394. smalltalk.method({
  1395. selector: "stream:",
  1396. fn: function (aStream) {
  1397. var self=this;
  1398. self["@stream"]=aStream;
  1399. return self;}
  1400. }),
  1401. smalltalk.IRJSTranslator);
  1402. smalltalk.addMethod(
  1403. "_visitIRAssignment_",
  1404. smalltalk.method({
  1405. selector: "visitIRAssignment:",
  1406. fn: function (anIRAssignment) {
  1407. var self=this;
  1408. smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRAssignment,"_instructions",[]),"_first",[])]);
  1409. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAssignment",[]);
  1410. smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRAssignment,"_instructions",[]),"_last",[])]);
  1411. return self;}
  1412. }),
  1413. smalltalk.IRJSTranslator);
  1414. smalltalk.addMethod(
  1415. "_visitIRClosure_",
  1416. smalltalk.method({
  1417. selector: "visitIRClosure:",
  1418. fn: function (anIRClosure) {
  1419. var self=this;
  1420. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutClosureWith_arguments_",[(function(){
  1421. return smalltalk.send(self,"_visitIRClosure_",[anIRClosure],smalltalk.IRVisitor);
  1422. }),smalltalk.send(anIRClosure,"_arguments",[])]);
  1423. return self;}
  1424. }),
  1425. smalltalk.IRJSTranslator);
  1426. smalltalk.addMethod(
  1427. "_visitIRDynamicArray_",
  1428. smalltalk.method({
  1429. selector: "visitIRDynamicArray:",
  1430. fn: function (anIRDynamicArray) {
  1431. var self=this;
  1432. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",["["]);
  1433. smalltalk.send(smalltalk.send(anIRDynamicArray,"_instructions",[]),"_do_separatedBy_",[(function(each){
  1434. return smalltalk.send(self,"_visit_",[each]);
  1435. }),(function(){
  1436. return smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[","]);
  1437. })]);
  1438. smalltalk.send(self["@stream"],"_nextPutAll_",["]"]);
  1439. return self;}
  1440. }),
  1441. smalltalk.IRJSTranslator);
  1442. smalltalk.addMethod(
  1443. "_visitIRDynamicDictionary_",
  1444. smalltalk.method({
  1445. selector: "visitIRDynamicDictionary:",
  1446. fn: function (anIRDynamicDictionary) {
  1447. var self=this;
  1448. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",["smalltalk.HashedCollection._fromPairs_(["]);
  1449. smalltalk.send(smalltalk.send(anIRDynamicDictionary,"_instructions",[]),"_do_separatedBy_",[(function(each){
  1450. return smalltalk.send(self,"_visit_",[each]);
  1451. }),(function(){
  1452. return smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[","]);
  1453. })]);
  1454. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",["])"]);
  1455. return self;}
  1456. }),
  1457. smalltalk.IRJSTranslator);
  1458. smalltalk.addMethod(
  1459. "_visitIRMethod_",
  1460. smalltalk.method({
  1461. selector: "visitIRMethod:",
  1462. fn: function (anIRMethod) {
  1463. var self=this;
  1464. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutMethodDeclaration_with_",[anIRMethod,(function(){
  1465. return smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutFunctionWith_arguments_",[(function(){
  1466. if(smalltalk.assert(smalltalk.send(smalltalk.send(anIRMethod,"_internalVariables",[]),"_notEmpty",[]))){
  1467. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutVars_",[smalltalk.send(smalltalk.send(smalltalk.send(anIRMethod,"_internalVariables",[]),"_asArray",[]),"_collect_",[(function(each){
  1468. return smalltalk.send(smalltalk.send(each,"_variable",[]),"_alias",[]);
  1469. })])]);
  1470. };
  1471. return smalltalk.send(smalltalk.send(smalltalk.send(anIRMethod,"_scope",[]),"_hasNonLocalReturn",[]),"_ifTrue_ifFalse_",[(function(){
  1472. return smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutNonLocalReturnHandlingWith_",[(function(){
  1473. return smalltalk.send(self,"_visitIRMethod_",[anIRMethod],smalltalk.IRVisitor);
  1474. })]);
  1475. }),(function(){
  1476. return smalltalk.send(self,"_visitIRMethod_",[anIRMethod],smalltalk.IRVisitor);
  1477. })]);
  1478. }),smalltalk.send(anIRMethod,"_arguments",[])]);
  1479. })]);
  1480. return self;}
  1481. }),
  1482. smalltalk.IRJSTranslator);
  1483. smalltalk.addMethod(
  1484. "_visitIRNonLocalReturn_",
  1485. smalltalk.method({
  1486. selector: "visitIRNonLocalReturn:",
  1487. fn: function (anIRNonLocalReturn) {
  1488. var self=this;
  1489. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutNonLocalReturnWith_",[(function(){
  1490. return smalltalk.send(self,"_visitIRNonLocalReturn_",[anIRNonLocalReturn],smalltalk.IRVisitor);
  1491. })]);
  1492. return self;}
  1493. }),
  1494. smalltalk.IRJSTranslator);
  1495. smalltalk.addMethod(
  1496. "_visitIRReturn_",
  1497. smalltalk.method({
  1498. selector: "visitIRReturn:",
  1499. fn: function (anIRReturn) {
  1500. var self=this;
  1501. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutReturnWith_",[(function(){
  1502. return smalltalk.send(self,"_visitIRReturn_",[anIRReturn],smalltalk.IRVisitor);
  1503. })]);
  1504. return self;}
  1505. }),
  1506. smalltalk.IRJSTranslator);
  1507. smalltalk.addMethod(
  1508. "_visitIRSend_",
  1509. smalltalk.method({
  1510. selector: "visitIRSend:",
  1511. fn: function (anIRSend) {
  1512. var self=this;
  1513. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",["smalltalk.send("]);
  1514. smalltalk.send(self,"_visit_",[smalltalk.send(smalltalk.send(anIRSend,"_instructions",[]),"_first",[])]);
  1515. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[smalltalk.send(smalltalk.send(",\x22","__comma",[smalltalk.send(smalltalk.send(anIRSend,"_selector",[]),"_asSelector",[])]),"__comma",["\x22,["])]);
  1516. smalltalk.send(smalltalk.send(smalltalk.send(anIRSend,"_instructions",[]),"_allButFirst",[]),"_do_separatedBy_",[(function(each){
  1517. return smalltalk.send(self,"_visit_",[each]);
  1518. }),(function(){
  1519. return smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[","]);
  1520. })]);
  1521. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",["]"]);
  1522. smalltalk.send(smalltalk.send(anIRSend,"_classSend",[]),"_ifNotNil_",[(function(){
  1523. return smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[smalltalk.send(",","__comma",[smalltalk.send(smalltalk.send(anIRSend,"_classSend",[]),"_asJavascript",[])])]);
  1524. })]);
  1525. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[")"]);
  1526. return self;}
  1527. }),
  1528. smalltalk.IRJSTranslator);
  1529. smalltalk.addMethod(
  1530. "_visitIRSequence_",
  1531. smalltalk.method({
  1532. selector: "visitIRSequence:",
  1533. fn: function (anIRSequence) {
  1534. var self=this;
  1535. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutSequenceWith_",[(function(){
  1536. return smalltalk.send(smalltalk.send(anIRSequence,"_instructions",[]),"_do_",[(function(each){
  1537. return smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutStatementWith_",[smalltalk.send(self,"_visit_",[each])]);
  1538. })]);
  1539. })]);
  1540. return self;}
  1541. }),
  1542. smalltalk.IRJSTranslator);
  1543. smalltalk.addMethod(
  1544. "_visitIRTempDeclaration_",
  1545. smalltalk.method({
  1546. selector: "visitIRTempDeclaration:",
  1547. fn: function (anIRTempDeclaration) {
  1548. var self=this;
  1549. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutVar_",[smalltalk.send(smalltalk.send(anIRTempDeclaration,"_name",[]),"_asVariableName",[])]);
  1550. return self;}
  1551. }),
  1552. smalltalk.IRJSTranslator);
  1553. smalltalk.addMethod(
  1554. "_visitIRValue_",
  1555. smalltalk.method({
  1556. selector: "visitIRValue:",
  1557. fn: function (anIRValue) {
  1558. var self=this;
  1559. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[smalltalk.send(smalltalk.send(anIRValue,"_value",[]),"_asJavascript",[])]);
  1560. return self;}
  1561. }),
  1562. smalltalk.IRJSTranslator);
  1563. smalltalk.addMethod(
  1564. "_visitIRVariable_",
  1565. smalltalk.method({
  1566. selector: "visitIRVariable:",
  1567. fn: function (anIRVariable) {
  1568. var self=this;
  1569. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[smalltalk.send(smalltalk.send(anIRVariable,"_variable",[]),"_alias",[])]);
  1570. return self;}
  1571. }),
  1572. smalltalk.IRJSTranslator);
  1573. smalltalk.addMethod(
  1574. "_visitIRVerbatim_",
  1575. smalltalk.method({
  1576. selector: "visitIRVerbatim:",
  1577. fn: function (anIRVerbatim) {
  1578. var self=this;
  1579. smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutStatementWith_",[(function(){
  1580. return smalltalk.send(smalltalk.send(self,"_stream",[]),"_nextPutAll_",[smalltalk.send(anIRVerbatim,"_source",[])]);
  1581. })]);
  1582. return self;}
  1583. }),
  1584. smalltalk.IRJSTranslator);
  1585. smalltalk.addClass('JSStream', smalltalk.Object, ['stream'], 'Compiler-IR');
  1586. smalltalk.addMethod(
  1587. "_contents",
  1588. smalltalk.method({
  1589. selector: "contents",
  1590. fn: function () {
  1591. var self=this;
  1592. return smalltalk.send(self["@stream"],"_contents",[]);
  1593. }
  1594. }),
  1595. smalltalk.JSStream);
  1596. smalltalk.addMethod(
  1597. "_initialize",
  1598. smalltalk.method({
  1599. selector: "initialize",
  1600. fn: function () {
  1601. var self=this;
  1602. smalltalk.send(self,"_initialize",[],smalltalk.Object);
  1603. self["@stream"]=smalltalk.send("","_writeStream",[]);
  1604. return self;}
  1605. }),
  1606. smalltalk.JSStream);
  1607. smalltalk.addMethod(
  1608. "_lf",
  1609. smalltalk.method({
  1610. selector: "lf",
  1611. fn: function () {
  1612. var self=this;
  1613. smalltalk.send(self["@stream"],"_lf",[]);
  1614. return self;}
  1615. }),
  1616. smalltalk.JSStream);
  1617. smalltalk.addMethod(
  1618. "_nextPut_",
  1619. smalltalk.method({
  1620. selector: "nextPut:",
  1621. fn: function (aString) {
  1622. var self=this;
  1623. smalltalk.send(self["@stream"],"_nextPut_",[aString]);
  1624. return self;}
  1625. }),
  1626. smalltalk.JSStream);
  1627. smalltalk.addMethod(
  1628. "_nextPutAll_",
  1629. smalltalk.method({
  1630. selector: "nextPutAll:",
  1631. fn: function (aString) {
  1632. var self=this;
  1633. smalltalk.send(self["@stream"],"_nextPutAll_",[aString]);
  1634. return self;}
  1635. }),
  1636. smalltalk.JSStream);
  1637. smalltalk.addMethod(
  1638. "_nextPutAssignment",
  1639. smalltalk.method({
  1640. selector: "nextPutAssignment",
  1641. fn: function () {
  1642. var self=this;
  1643. smalltalk.send(self["@stream"],"_nextPutAll_",["="]);
  1644. return self;}
  1645. }),
  1646. smalltalk.JSStream);
  1647. smalltalk.addMethod(
  1648. "_nextPutClosureWith_arguments_",
  1649. smalltalk.method({
  1650. selector: "nextPutClosureWith:arguments:",
  1651. fn: function (aBlock, anArray) {
  1652. var self=this;
  1653. var $1;
  1654. smalltalk.send(self["@stream"],"_nextPutAll_",["(function("]);
  1655. smalltalk.send(anArray,"_do_separatedBy_",[(function(each){
  1656. return smalltalk.send(self["@stream"],"_nextPutAll_",[smalltalk.send(each,"_asVariableName",[])]);
  1657. }),(function(){
  1658. return smalltalk.send(self["@stream"],"_nextPut_",[","]);
  1659. })]);
  1660. smalltalk.send(self["@stream"],"_nextPutAll_",["){"]);
  1661. $1=smalltalk.send(self["@stream"],"_lf",[]);
  1662. smalltalk.send(aBlock,"_value",[]);
  1663. smalltalk.send(self["@stream"],"_nextPutAll_",["})"]);
  1664. return self;}
  1665. }),
  1666. smalltalk.JSStream);
  1667. smalltalk.addMethod(
  1668. "_nextPutFunctionWith_arguments_",
  1669. smalltalk.method({
  1670. selector: "nextPutFunctionWith:arguments:",
  1671. fn: function (aBlock, anArray) {
  1672. var self=this;
  1673. var $1,$2;
  1674. smalltalk.send(self["@stream"],"_nextPutAll_",["fn: function("]);
  1675. smalltalk.send(anArray,"_do_separatedBy_",[(function(each){
  1676. return smalltalk.send(self["@stream"],"_nextPutAll_",[smalltalk.send(each,"_asVariableName",[])]);
  1677. }),(function(){
  1678. return smalltalk.send(self["@stream"],"_nextPut_",[","]);
  1679. })]);
  1680. smalltalk.send(self["@stream"],"_nextPutAll_",["){"]);
  1681. $1=smalltalk.send(self["@stream"],"_lf",[]);
  1682. smalltalk.send(self["@stream"],"_nextPutAll_",["var self=this;"]);
  1683. $2=smalltalk.send(self["@stream"],"_lf",[]);
  1684. smalltalk.send(aBlock,"_value",[]);
  1685. smalltalk.send(self["@stream"],"_nextPutAll_",["}"]);
  1686. return self;}
  1687. }),
  1688. smalltalk.JSStream);
  1689. smalltalk.addMethod(
  1690. "_nextPutIf_with_",
  1691. smalltalk.method({
  1692. selector: "nextPutIf:with:",
  1693. fn: function (aBlock, anotherBlock) {
  1694. var self=this;
  1695. var $1;
  1696. smalltalk.send(self["@stream"],"_nextPutAll_",["if("]);
  1697. smalltalk.send(aBlock,"_value",[]);
  1698. smalltalk.send(self["@stream"],"_nextPutAll_",["){"]);
  1699. $1=smalltalk.send(self["@stream"],"_lf",[]);
  1700. smalltalk.send(anotherBlock,"_value",[]);
  1701. smalltalk.send(self["@stream"],"_nextPutAll_",["}"]);
  1702. return self;}
  1703. }),
  1704. smalltalk.JSStream);
  1705. smalltalk.addMethod(
  1706. "_nextPutIfElse_with_with_",
  1707. smalltalk.method({
  1708. selector: "nextPutIfElse:with:with:",
  1709. fn: function (aBlock, ifBlock, elseBlock) {
  1710. var self=this;
  1711. var $1,$2;
  1712. smalltalk.send(self["@stream"],"_nextPutAll_",["if("]);
  1713. smalltalk.send(aBlock,"_value",[]);
  1714. smalltalk.send(self["@stream"],"_nextPutAll_",["){"]);
  1715. $1=smalltalk.send(self["@stream"],"_lf",[]);
  1716. smalltalk.send(ifBlock,"_value",[]);
  1717. smalltalk.send(self["@stream"],"_nextPutAll_",["} else {"]);
  1718. $2=smalltalk.send(self["@stream"],"_lf",[]);
  1719. smalltalk.send(elseBlock,"_value",[]);
  1720. smalltalk.send(self["@stream"],"_nextPutAll_",["}"]);
  1721. return self;}
  1722. }),
  1723. smalltalk.JSStream);
  1724. smalltalk.addMethod(
  1725. "_nextPutMethodDeclaration_with_",
  1726. smalltalk.method({
  1727. selector: "nextPutMethodDeclaration:with:",
  1728. fn: function (aMethod, aBlock) {
  1729. var self=this;
  1730. var $1,$2,$3;
  1731. smalltalk.send(self["@stream"],"_nextPutAll_",["smalltalk.method({"]);
  1732. smalltalk.send(self["@stream"],"_lf",[]);
  1733. smalltalk.send(self["@stream"],"_nextPutAll_",[smalltalk.send(smalltalk.send("selector: \x22","__comma",[smalltalk.send(aMethod,"_selector",[])]),"__comma",["\x22,"])]);
  1734. smalltalk.send(self["@stream"],"_lf",[]);
  1735. smalltalk.send(self["@stream"],"_nextPutAll_",[smalltalk.send(smalltalk.send("source: ","__comma",[smalltalk.send(smalltalk.send(aMethod,"_source",[]),"_asJavascript",[])]),"__comma",[","])]);
  1736. $1=smalltalk.send(self["@stream"],"_lf",[]);
  1737. smalltalk.send(aBlock,"_value",[]);
  1738. smalltalk.send(self["@stream"],"_nextPutAll_",[smalltalk.send(smalltalk.send(",","__comma",[smalltalk.send((smalltalk.String || String),"_lf",[])]),"__comma",["messageSends: "])]);
  1739. smalltalk.send(self["@stream"],"_nextPutAll_",[smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aMethod,"_messageSends",[]),"_asArray",[]),"_asJavascript",[]),"__comma",[","])]);
  1740. smalltalk.send(self["@stream"],"_lf",[]);
  1741. smalltalk.send(self["@stream"],"_nextPutAll_",[smalltalk.send(smalltalk.send("args: ","__comma",[smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aMethod,"_arguments",[]),"_collect_",[(function(each){
  1742. return smalltalk.send(each,"_value",[]);
  1743. })]),"_asArray",[]),"_asJavascript",[])]),"__comma",[","])]);
  1744. smalltalk.send(self["@stream"],"_lf",[]);
  1745. $2=smalltalk.send(self["@stream"],"_nextPutAll_",["referencedClasses: ["]);
  1746. smalltalk.send(smalltalk.send(aMethod,"_classReferences",[]),"_do_separatedBy_",[(function(each){
  1747. return smalltalk.send(self["@stream"],"_nextPutAll_",[smalltalk.send(each,"_asJavascript",[])]);
  1748. }),(function(){
  1749. return smalltalk.send(self["@stream"],"_nextPutAll_",[","]);
  1750. })]);
  1751. smalltalk.send(self["@stream"],"_nextPutAll_",["]"]);
  1752. $3=smalltalk.send(self["@stream"],"_nextPutAll_",["})"]);
  1753. return self;}
  1754. }),
  1755. smalltalk.JSStream);
  1756. smalltalk.addMethod(
  1757. "_nextPutNonLocalReturnHandlingWith_",
  1758. smalltalk.method({
  1759. selector: "nextPutNonLocalReturnHandlingWith:",
  1760. fn: function (aBlock) {
  1761. var self=this;
  1762. var $1,$2;
  1763. smalltalk.send(self["@stream"],"_nextPutAll_",["var $early={};"]);
  1764. smalltalk.send(self["@stream"],"_lf",[]);
  1765. smalltalk.send(self["@stream"],"_nextPutAll_",["try {"]);
  1766. $1=smalltalk.send(self["@stream"],"_lf",[]);
  1767. smalltalk.send(aBlock,"_value",[]);
  1768. smalltalk.send(self["@stream"],"_nextPutAll_",["}"]);
  1769. smalltalk.send(self["@stream"],"_lf",[]);
  1770. smalltalk.send(self["@stream"],"_nextPutAll_",["catch(e) {if(e===$early)return e[0]; throw e}"]);
  1771. $2=smalltalk.send(self["@stream"],"_lf",[]);
  1772. return self;}
  1773. }),
  1774. smalltalk.JSStream);
  1775. smalltalk.addMethod(
  1776. "_nextPutNonLocalReturnWith_",
  1777. smalltalk.method({
  1778. selector: "nextPutNonLocalReturnWith:",
  1779. fn: function (aBlock) {
  1780. var self=this;
  1781. smalltalk.send(self["@stream"],"_nextPutAll_",["throw $early=["]);
  1782. smalltalk.send(aBlock,"_value",[]);
  1783. smalltalk.send(self["@stream"],"_nextPutAll_",["]"]);
  1784. return self;}
  1785. }),
  1786. smalltalk.JSStream);
  1787. smalltalk.addMethod(
  1788. "_nextPutReturn",
  1789. smalltalk.method({
  1790. selector: "nextPutReturn",
  1791. fn: function () {
  1792. var self=this;
  1793. smalltalk.send(self["@stream"],"_nextPutAll_",["return "]);
  1794. return self;}
  1795. }),
  1796. smalltalk.JSStream);
  1797. smalltalk.addMethod(
  1798. "_nextPutReturnWith_",
  1799. smalltalk.method({
  1800. selector: "nextPutReturnWith:",
  1801. fn: function (aBlock) {
  1802. var self=this;
  1803. smalltalk.send(self,"_nextPutReturn",[]);
  1804. smalltalk.send(aBlock,"_value",[]);
  1805. return self;}
  1806. }),
  1807. smalltalk.JSStream);
  1808. smalltalk.addMethod(
  1809. "_nextPutSendTo_selector_arguments_",
  1810. smalltalk.method({
  1811. selector: "nextPutSendTo:selector:arguments:",
  1812. fn: function (receiver, selector, arguments) {
  1813. var self=this;
  1814. smalltalk.send(self["@stream"],"_nextPutAll_",["smalltalk.send("]);
  1815. smalltalk.send(receiver,"_emitOn_",[self]);
  1816. smalltalk.send(self["@stream"],"_nextPutAll_",[smalltalk.send(smalltalk.send(",\x22","__comma",[smalltalk.send(selector,"_asSelector",[])]),"__comma",["\x22,["])]);
  1817. smalltalk.send(arguments,"_do_separatedBy_",[(function(each){
  1818. return smalltalk.send(each,"_emitOn_",[self]);
  1819. }),(function(){
  1820. return smalltalk.send(self["@stream"],"_nextPutAll_",[","]);
  1821. })]);
  1822. smalltalk.send(self["@stream"],"_nextPutAll_",["])"]);
  1823. return self;}
  1824. }),
  1825. smalltalk.JSStream);
  1826. smalltalk.addMethod(
  1827. "_nextPutSequenceWith_",
  1828. smalltalk.method({
  1829. selector: "nextPutSequenceWith:",
  1830. fn: function (aBlock) {
  1831. var self=this;
  1832. smalltalk.send(aBlock,"_value",[]);
  1833. return self;}
  1834. }),
  1835. smalltalk.JSStream);
  1836. smalltalk.addMethod(
  1837. "_nextPutStatement_with_",
  1838. smalltalk.method({
  1839. selector: "nextPutStatement:with:",
  1840. fn: function (anInteger, aBlock) {
  1841. var self=this;
  1842. var $1,$2;
  1843. smalltalk.send(self["@stream"],"_nextPutAll_",[smalltalk.send(smalltalk.send("case ","__comma",[smalltalk.send(anInteger,"_asString",[])]),"__comma",[":"])]);
  1844. $1=smalltalk.send(self["@stream"],"_lf",[]);
  1845. smalltalk.send(self,"_nextPutStatementWith_",[aBlock]);
  1846. smalltalk.send(self["@stream"],"_nextPutAll_",[smalltalk.send(smalltalk.send("smalltalk.thisContext.pc=","__comma",[smalltalk.send(smalltalk.send(anInteger,"__plus",[(1)]),"_asString",[])]),"__comma",[";"])]);
  1847. $2=smalltalk.send(self["@stream"],"_lf",[]);
  1848. return self;}
  1849. }),
  1850. smalltalk.JSStream);
  1851. smalltalk.addMethod(
  1852. "_nextPutStatementWith_",
  1853. smalltalk.method({
  1854. selector: "nextPutStatementWith:",
  1855. fn: function (aBlock) {
  1856. var self=this;
  1857. var $1;
  1858. smalltalk.send(aBlock,"_value",[]);
  1859. smalltalk.send(self["@stream"],"_nextPutAll_",[";"]);
  1860. $1=smalltalk.send(self["@stream"],"_lf",[]);
  1861. return self;}
  1862. }),
  1863. smalltalk.JSStream);
  1864. smalltalk.addMethod(
  1865. "_nextPutVar_",
  1866. smalltalk.method({
  1867. selector: "nextPutVar:",
  1868. fn: function (aString) {
  1869. var self=this;
  1870. var $1;
  1871. smalltalk.send(self["@stream"],"_nextPutAll_",[smalltalk.send(smalltalk.send("var ","__comma",[aString]),"__comma",[";"])]);
  1872. $1=smalltalk.send(self["@stream"],"_lf",[]);
  1873. return self;}
  1874. }),
  1875. smalltalk.JSStream);
  1876. smalltalk.addMethod(
  1877. "_nextPutVars_",
  1878. smalltalk.method({
  1879. selector: "nextPutVars:",
  1880. fn: function (aCollection) {
  1881. var self=this;
  1882. var $1;
  1883. smalltalk.send(self["@stream"],"_nextPutAll_",["var "]);
  1884. smalltalk.send(aCollection,"_do_separatedBy_",[(function(each){
  1885. return smalltalk.send(self["@stream"],"_nextPutAll_",[each]);
  1886. }),(function(){
  1887. return smalltalk.send(self["@stream"],"_nextPutAll_",[","]);
  1888. })]);
  1889. smalltalk.send(self["@stream"],"_nextPutAll_",[";"]);
  1890. $1=smalltalk.send(self["@stream"],"_lf",[]);
  1891. return self;}
  1892. }),
  1893. smalltalk.JSStream);
  1894. smalltalk.addMethod(
  1895. "_appendToInstruction_",
  1896. smalltalk.method({
  1897. selector: "appendToInstruction:",
  1898. fn: function (anIRInstruction) {
  1899. var self=this;
  1900. smalltalk.send(anIRInstruction,"_appendBlock_",[self]);
  1901. return self;}
  1902. }),
  1903. smalltalk.BlockClosure);
  1904. smalltalk.addMethod(
  1905. "_asVariableName",
  1906. smalltalk.method({
  1907. selector: "asVariableName",
  1908. fn: function () {
  1909. var self=this;
  1910. return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk),"_current",[]),"_reservedWords",[]),"_includes_",[self]),"_ifTrue_ifFalse_",[(function(){
  1911. return smalltalk.send(self,"__comma",["_"]);
  1912. }),(function(){
  1913. return self;
  1914. })]);
  1915. }
  1916. }),
  1917. smalltalk.String);