17
17
from som .interpreter .ast .nodes .return_non_local_node import ReturnNonLocalNode
18
18
from som .interpreter .ast .nodes .sequence_node import SequenceNode
19
19
from som .interpreter .ast .nodes .specialized .int_inc_node import IntIncrementNode
20
- from som .interpreter .ast .nodes .specialized .literal_and_or import (
21
- AndInlinedNode ,
22
- OrInlinedNode ,
23
- )
24
- from som .interpreter .ast .nodes .specialized .literal_if import (
25
- IfInlinedNode ,
26
- IfElseInlinedNode ,
27
- )
28
- from som .interpreter .ast .nodes .specialized .literal_while import WhileInlinedNode
29
20
from som .vm .symbols import symbol_for
30
21
31
22
from som .vmobjects .array import Array
@@ -205,17 +196,6 @@ def _binary_message(self, mgenc, receiver):
205
196
206
197
source = self ._get_source_section (coord )
207
198
208
- if not is_super_send :
209
- sel = selector .get_embedded_string ()
210
- if sel == "&&" :
211
- inlined = self ._try_inlining_and (receiver , arg_expr , source , mgenc )
212
- if inlined is not None :
213
- return inlined
214
- elif sel == "||" :
215
- inlined = self ._try_inlining_or (receiver , arg_expr , source , mgenc )
216
- if inlined is not None :
217
- return inlined
218
-
219
199
if is_super_send :
220
200
return BinarySuper (
221
201
selector , receiver , arg_expr , mgenc .holder .get_super_class (), source
@@ -239,58 +219,6 @@ def _binary_operand(self, mgenc):
239
219
240
220
return operand
241
221
242
- @staticmethod
243
- def _try_inlining_if (if_true , receiver , arguments , source , mgenc ):
244
- arg = arguments [0 ]
245
- if not isinstance (arg , BlockNode ):
246
- return None
247
-
248
- method = arg .get_method ()
249
- body_expr = method .inline (mgenc )
250
- return IfInlinedNode (receiver , body_expr , if_true , source )
251
-
252
- @staticmethod
253
- def _try_inlining_if_else (if_true , receiver , arguments , source , mgenc ):
254
- arg1 = arguments [0 ]
255
- if not isinstance (arg1 , BlockNode ):
256
- return None
257
-
258
- arg2 = arguments [1 ]
259
- if not isinstance (arg2 , BlockNode ):
260
- return None
261
-
262
- true_expr = arg1 .get_method ().inline (mgenc )
263
- false_expr = arg2 .get_method ().inline (mgenc )
264
- return IfElseInlinedNode (receiver , true_expr , false_expr , if_true , source )
265
-
266
- @staticmethod
267
- def _try_inlining_while (while_true , receiver , arguments , source , mgenc ):
268
- if not isinstance (receiver , BlockNode ):
269
- return None
270
-
271
- if not isinstance (arguments [0 ], BlockNode ):
272
- return None
273
-
274
- cond_expr = receiver .get_method ().inline (mgenc )
275
- body_expr = arguments [0 ].get_method ().inline (mgenc )
276
- return WhileInlinedNode (cond_expr , body_expr , while_true , source )
277
-
278
- @staticmethod
279
- def _try_inlining_and (receiver , arg_expr , source , mgenc ):
280
- if not isinstance (arg_expr , BlockNode ):
281
- return None
282
-
283
- arg_body = arg_expr .get_method ().inline (mgenc )
284
- return AndInlinedNode (receiver , arg_body , source )
285
-
286
- @staticmethod
287
- def _try_inlining_or (receiver , arg_expr , source , mgenc ):
288
- if not isinstance (arg_expr , BlockNode ):
289
- return None
290
-
291
- arg_body = arg_expr .get_method ().inline (mgenc )
292
- return OrInlinedNode (receiver , arg_body , source )
293
-
294
222
def _keyword_message (self , mgenc , receiver ):
295
223
is_super_send = self ._super_send
296
224
@@ -303,61 +231,6 @@ def _keyword_message(self, mgenc, receiver):
303
231
arguments .append (self ._formula (mgenc ))
304
232
305
233
keyword = "" .join (keyword_parts )
306
- source = self ._get_source_section (coord )
307
-
308
- num_args = len (arguments )
309
-
310
- if not is_super_send :
311
- if num_args == 1 :
312
- if keyword == "ifTrue:" :
313
- inlined = self ._try_inlining_if (
314
- True , receiver , arguments , source , mgenc
315
- )
316
- if inlined is not None :
317
- return inlined
318
- elif keyword == "ifFalse:" :
319
- inlined = self ._try_inlining_if (
320
- False , receiver , arguments , source , mgenc
321
- )
322
- if inlined is not None :
323
- return inlined
324
- elif keyword == "whileTrue:" :
325
- inlined = self ._try_inlining_while (
326
- True , receiver , arguments , source , mgenc
327
- )
328
- if inlined is not None :
329
- return inlined
330
- elif keyword == "whileFalse:" :
331
- inlined = self ._try_inlining_while (
332
- False , receiver , arguments , source , mgenc
333
- )
334
- if inlined is not None :
335
- return inlined
336
- elif keyword == "and:" :
337
- inlined = self ._try_inlining_and (
338
- receiver , arguments [0 ], source , mgenc
339
- )
340
- if inlined is not None :
341
- return inlined
342
- elif keyword == "or:" :
343
- inlined = self ._try_inlining_or (
344
- receiver , arguments [0 ], source , mgenc
345
- )
346
- if inlined is not None :
347
- return inlined
348
- elif num_args == 2 :
349
- if keyword == "ifTrue:ifFalse:" :
350
- inlined = self ._try_inlining_if_else (
351
- True , receiver , arguments , source , mgenc
352
- )
353
- if inlined is not None :
354
- return inlined
355
- elif keyword == "ifFalse:ifTrue:" :
356
- inlined = self ._try_inlining_if_else (
357
- False , receiver , arguments , source , mgenc
358
- )
359
- if inlined is not None :
360
- return inlined
361
234
362
235
selector = symbol_for (keyword )
363
236
0 commit comments