| OLD | NEW | 
|---|
| 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a | 
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 library dart2js.ir_builder_task; | 5 library dart2js.ir_builder_task; | 
| 6 | 6 | 
| 7 import '../closure.dart' as closure; | 7 import '../closure.dart' as closure; | 
| 8 import '../common.dart'; | 8 import '../common.dart'; | 
| 9 import '../common/names.dart' show | 9 import '../common/names.dart' show | 
|  | 10     Identifiers, | 
| 10     Names, | 11     Names, | 
| 11     Selectors; | 12     Selectors; | 
| 12 import '../common/tasks.dart' show | 13 import '../common/tasks.dart' show | 
| 13     CompilerTask; | 14     CompilerTask; | 
| 14 import '../compiler.dart' show | 15 import '../compiler.dart' show | 
| 15     Compiler; | 16     Compiler; | 
| 16 import '../constants/expressions.dart'; | 17 import '../constants/expressions.dart'; | 
| 17 import '../dart_types.dart'; | 18 import '../dart_types.dart'; | 
| 18 import '../elements/elements.dart'; | 19 import '../elements/elements.dart'; | 
| 19 import '../elements/modelx.dart' show | 20 import '../elements/modelx.dart' show | 
| (...skipping 1867 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1887       ast.Send node, | 1888       ast.Send node, | 
| 1888       MethodElement method, | 1889       MethodElement method, | 
| 1889       _) { | 1890       _) { | 
| 1890     return irBuilder.buildSuperMethodGet(method); | 1891     return irBuilder.buildSuperMethodGet(method); | 
| 1891   } | 1892   } | 
| 1892 | 1893 | 
| 1893   @override | 1894   @override | 
| 1894   ir.Primitive visitUnresolvedSuperGet( | 1895   ir.Primitive visitUnresolvedSuperGet( | 
| 1895       ast.Send node, | 1896       ast.Send node, | 
| 1896       Element element, _) { | 1897       Element element, _) { | 
| 1897     return buildInstanceNoSuchMethod( | 1898     return buildSuperNoSuchMethod( | 
| 1898         elements.getSelector(node), elements.getTypeMask(node), []); | 1899         elements.getSelector(node), elements.getTypeMask(node), []); | 
| 1899   } | 1900   } | 
| 1900 | 1901 | 
| 1901   @override | 1902   @override | 
|  | 1903   ir.Primitive visitUnresolvedSuperSet( | 
|  | 1904       ast.Send node, | 
|  | 1905       Element element, | 
|  | 1906       ast.Node rhs, _) { | 
|  | 1907     return buildSuperNoSuchMethod( | 
|  | 1908         elements.getSelector(node), elements.getTypeMask(node), [visit(rhs)]); | 
|  | 1909   } | 
|  | 1910 | 
|  | 1911   @override | 
| 1902   ir.Primitive visitThisGet(ast.Identifier node, _) { | 1912   ir.Primitive visitThisGet(ast.Identifier node, _) { | 
| 1903     if (irBuilder.state.thisParameter == null) { | 1913     if (irBuilder.state.thisParameter == null) { | 
| 1904       // TODO(asgerf,johnniwinther): Should be in a visitInvalidThis method. | 1914       // TODO(asgerf,johnniwinther): Should be in a visitInvalidThis method. | 
| 1905       // 'this' in static context. Just translate to null. | 1915       // 'this' in static context. Just translate to null. | 
| 1906       assert(compiler.compilationFailed); | 1916       assert(compiler.compilationFailed); | 
| 1907       return irBuilder.buildNullConstant(); | 1917       return irBuilder.buildNullConstant(); | 
| 1908     } | 1918     } | 
| 1909     return irBuilder.buildThis(); | 1919     return irBuilder.buildThis(); | 
| 1910   } | 1920   } | 
| 1911 | 1921 | 
| (...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2421 | 2431 | 
| 2422   @override | 2432   @override | 
| 2423   ir.Primitive visitSuperMethodIncompatibleInvoke( | 2433   ir.Primitive visitSuperMethodIncompatibleInvoke( | 
| 2424       ast.Send node, | 2434       ast.Send node, | 
| 2425       MethodElement method, | 2435       MethodElement method, | 
| 2426       ast.NodeList arguments, | 2436       ast.NodeList arguments, | 
| 2427       CallStructure callStructure, _) { | 2437       CallStructure callStructure, _) { | 
| 2428     List<ir.Primitive> normalizedArguments = <ir.Primitive>[]; | 2438     List<ir.Primitive> normalizedArguments = <ir.Primitive>[]; | 
| 2429     CallStructure normalizedCallStructure = | 2439     CallStructure normalizedCallStructure = | 
| 2430       translateDynamicArguments(arguments, callStructure, normalizedArguments); | 2440       translateDynamicArguments(arguments, callStructure, normalizedArguments); | 
| 2431     return buildInstanceNoSuchMethod( | 2441     return buildSuperNoSuchMethod( | 
| 2432         new Selector.call(method.memberName, normalizedCallStructure), | 2442         new Selector.call(method.memberName, normalizedCallStructure), | 
| 2433         elements.getTypeMask(node), | 2443         elements.getTypeMask(node), | 
| 2434         normalizedArguments); | 2444         normalizedArguments); | 
| 2435   } | 2445   } | 
| 2436 | 2446 | 
| 2437   @override | 2447   @override | 
| 2438   ir.Primitive visitUnresolvedSuperInvoke( | 2448   ir.Primitive visitUnresolvedSuperInvoke( | 
| 2439       ast.Send node, | 2449       ast.Send node, | 
| 2440       Element element, | 2450       Element element, | 
| 2441       ast.NodeList argumentsNode, | 2451       ast.NodeList argumentsNode, | 
| 2442       Selector selector, _) { | 2452       Selector selector, _) { | 
| 2443     List<ir.Primitive> arguments = <ir.Primitive>[]; | 2453     List<ir.Primitive> arguments = <ir.Primitive>[]; | 
| 2444     CallStructure callStructure = translateDynamicArguments( | 2454     CallStructure callStructure = translateDynamicArguments( | 
| 2445         argumentsNode, selector.callStructure, arguments); | 2455         argumentsNode, selector.callStructure, arguments); | 
| 2446     // TODO(johnniwinther): Supply a member name to the visit function instead | 2456     // TODO(johnniwinther): Supply a member name to the visit function instead | 
| 2447     // of looking it up in elements. | 2457     // of looking it up in elements. | 
| 2448     return buildInstanceNoSuchMethod( | 2458     return buildSuperNoSuchMethod( | 
| 2449         new Selector.call(elements.getSelector(node).memberName, callStructure), | 2459         new Selector.call(elements.getSelector(node).memberName, callStructure), | 
| 2450         elements.getTypeMask(node), | 2460         elements.getTypeMask(node), | 
| 2451         arguments); | 2461         arguments); | 
| 2452   } | 2462   } | 
| 2453 | 2463 | 
| 2454   @override | 2464   @override | 
| 2455   ir.Primitive visitThisInvoke( | 2465   ir.Primitive visitThisInvoke( | 
| 2456       ast.Send node, | 2466       ast.Send node, | 
| 2457       ast.NodeList arguments, | 2467       ast.NodeList arguments, | 
| 2458       CallStructure callStructure, | 2468       CallStructure callStructure, | 
| (...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2849         case CompoundSetter.INVALID: | 2859         case CompoundSetter.INVALID: | 
| 2850           irBuilder.buildStaticNoSuchMethod( | 2860           irBuilder.buildStaticNoSuchMethod( | 
| 2851               new Selector.setter(new Name(setter.name, setter.library)), | 2861               new Selector.setter(new Name(setter.name, setter.library)), | 
| 2852               <ir.Primitive>[result]); | 2862               <ir.Primitive>[result]); | 
| 2853           return; | 2863           return; | 
| 2854       } | 2864       } | 
| 2855     }); | 2865     }); | 
| 2856   } | 2866   } | 
| 2857 | 2867 | 
| 2858   ir.Primitive buildSuperNoSuchGetter(Element element, TypeMask mask) { | 2868   ir.Primitive buildSuperNoSuchGetter(Element element, TypeMask mask) { | 
| 2859     return buildInstanceNoSuchMethod( | 2869     return buildSuperNoSuchMethod( | 
| 2860         new Selector.getter(new Name(element.name, element.library)), | 2870         new Selector.getter(new Name(element.name, element.library)), | 
| 2861         mask, | 2871         mask, | 
| 2862         const <ir.Primitive>[]); | 2872         const <ir.Primitive>[]); | 
| 2863   } | 2873   } | 
| 2864 | 2874 | 
| 2865   ir.Primitive buildSuperNoSuchSetter(Element element, | 2875   ir.Primitive buildSuperNoSuchSetter(Element element, | 
| 2866                                       TypeMask mask, | 2876                                       TypeMask mask, | 
| 2867                                       ir.Primitive value) { | 2877                                       ir.Primitive value) { | 
| 2868     return buildInstanceNoSuchMethod( | 2878     return buildSuperNoSuchMethod( | 
| 2869         new Selector.setter(new Name(element.name, element.library)), | 2879         new Selector.setter(new Name(element.name, element.library)), | 
| 2870         mask, | 2880         mask, | 
| 2871         <ir.Primitive>[value]); | 2881         <ir.Primitive>[value]); | 
| 2872   } | 2882   } | 
| 2873 | 2883 | 
| 2874   @override | 2884   @override | 
| 2875   ir.Primitive handleSuperCompounds( | 2885   ir.Primitive handleSuperCompounds( | 
| 2876       ast.SendSet node, | 2886       ast.SendSet node, | 
| 2877       Element getter, | 2887       Element getter, | 
| 2878       CompoundGetter getterKind, | 2888       CompoundGetter getterKind, | 
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3011       Element indexSetFunction, | 3021       Element indexSetFunction, | 
| 3012       ast.Node index, | 3022       ast.Node index, | 
| 3013       CompoundRhs rhs, | 3023       CompoundRhs rhs, | 
| 3014       arg, | 3024       arg, | 
| 3015       {bool isGetterValid, | 3025       {bool isGetterValid, | 
| 3016        bool isSetterValid}) { | 3026        bool isSetterValid}) { | 
| 3017     ir.Primitive indexValue = visit(index); | 3027     ir.Primitive indexValue = visit(index); | 
| 3018     return translateCompounds(node, () { | 3028     return translateCompounds(node, () { | 
| 3019       return isGetterValid | 3029       return isGetterValid | 
| 3020           ? irBuilder.buildSuperIndex(indexFunction, indexValue) | 3030           ? irBuilder.buildSuperIndex(indexFunction, indexValue) | 
| 3021           : buildInstanceNoSuchMethod( | 3031           : buildSuperNoSuchMethod( | 
| 3022               new Selector.index(), | 3032               new Selector.index(), | 
| 3023               elements.getGetterTypeMaskInComplexSendSet(node), | 3033               elements.getGetterTypeMaskInComplexSendSet(node), | 
| 3024               <ir.Primitive>[indexValue]); | 3034               <ir.Primitive>[indexValue]); | 
| 3025     }, rhs, (ir.Primitive result) { | 3035     }, rhs, (ir.Primitive result) { | 
| 3026       if (isSetterValid) { | 3036       if (isSetterValid) { | 
| 3027         irBuilder.buildSuperIndexSet(indexSetFunction, indexValue, result); | 3037         irBuilder.buildSuperIndexSet(indexSetFunction, indexValue, result); | 
| 3028       } else { | 3038       } else { | 
| 3029         buildInstanceNoSuchMethod( | 3039         buildSuperNoSuchMethod( | 
| 3030             new Selector.indexSet(), | 3040             new Selector.indexSet(), | 
| 3031             elements.getTypeMask(node), | 3041             elements.getTypeMask(node), | 
| 3032             <ir.Primitive>[indexValue, result]); | 3042             <ir.Primitive>[indexValue, result]); | 
| 3033       } | 3043       } | 
| 3034     }); | 3044     }); | 
| 3035   } | 3045   } | 
| 3036 | 3046 | 
| 3037   /// Build code to handle foreign code, that is, native JavaScript code, or | 3047   /// Build code to handle foreign code, that is, native JavaScript code, or | 
| 3038   /// builtin values and operations of the backend. | 3048   /// builtin values and operations of the backend. | 
| 3039   ir.Primitive handleForeignCode(ast.Send node, | 3049   ir.Primitive handleForeignCode(ast.Send node, | 
| (...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3320         sourceInformation: sourceInformationBuilder.buildGet(node)); | 3330         sourceInformation: sourceInformationBuilder.buildGet(node)); | 
| 3321   } | 3331   } | 
| 3322 | 3332 | 
| 3323   ir.Primitive visitThrow(ast.Throw node) { | 3333   ir.Primitive visitThrow(ast.Throw node) { | 
| 3324     assert(irBuilder.isOpen); | 3334     assert(irBuilder.isOpen); | 
| 3325     // This function is not called for throw expressions occurring as | 3335     // This function is not called for throw expressions occurring as | 
| 3326     // statements. | 3336     // statements. | 
| 3327     return irBuilder.buildNonTailThrow(visit(node.expression)); | 3337     return irBuilder.buildNonTailThrow(visit(node.expression)); | 
| 3328   } | 3338   } | 
| 3329 | 3339 | 
| 3330   ir.Primitive buildInstanceNoSuchMethod(Selector selector, | 3340   ir.Primitive buildSuperNoSuchMethod(Selector selector, | 
| 3331       TypeMask mask, | 3341       TypeMask mask, | 
| 3332       List<ir.Primitive> arguments) { | 3342       List<ir.Primitive> arguments) { | 
| 3333     return irBuilder.buildDynamicInvocation( | 3343     ClassElement cls = elements.analyzedElement.enclosingClass; | 
| 3334         irBuilder.buildThis(), | 3344     MethodElement element = cls.lookupSuperMember(Identifiers.noSuchMethod_); | 
| 3335         Selectors.noSuchMethod_, | 3345     if (!Selectors.noSuchMethod_.signatureApplies(element)) { | 
| 3336         mask, | 3346       element = compiler.coreClasses.objectClass.lookupMember( | 
|  | 3347           Identifiers.noSuchMethod_); | 
|  | 3348     } | 
|  | 3349     return irBuilder.buildSuperMethodInvocation( | 
|  | 3350         element, | 
|  | 3351         Selectors.noSuchMethod_.callStructure, | 
| 3337         [irBuilder.buildInvocationMirror(selector, arguments)]); | 3352         [irBuilder.buildInvocationMirror(selector, arguments)]); | 
| 3338   } | 3353   } | 
| 3339 | 3354 | 
| 3340   @override | 3355   @override | 
| 3341   ir.Primitive visitUnresolvedCompound( | 3356   ir.Primitive visitUnresolvedCompound( | 
| 3342       ast.Send node, | 3357       ast.Send node, | 
| 3343       Element element, | 3358       Element element, | 
| 3344       op.AssignmentOperator operator, | 3359       op.AssignmentOperator operator, | 
| 3345       ast.Node rhs, _) { | 3360       ast.Node rhs, _) { | 
| 3346     // TODO(asgerf): What is unresolved? The getter and/or the setter? | 3361     // TODO(asgerf): What is unresolved? The getter and/or the setter? | 
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3435     return irBuilder.buildStaticNoSuchMethod(elements.getSelector(node), | 3450     return irBuilder.buildStaticNoSuchMethod(elements.getSelector(node), | 
| 3436         [visit(rhs)]); | 3451         [visit(rhs)]); | 
| 3437   } | 3452   } | 
| 3438 | 3453 | 
| 3439   @override | 3454   @override | 
| 3440   ir.Primitive visitUnresolvedSuperIndex( | 3455   ir.Primitive visitUnresolvedSuperIndex( | 
| 3441       ast.Send node, | 3456       ast.Send node, | 
| 3442       Element function, | 3457       Element function, | 
| 3443       ast.Node index, _) { | 3458       ast.Node index, _) { | 
| 3444     // Assume the index getter is missing. | 3459     // Assume the index getter is missing. | 
| 3445     return buildInstanceNoSuchMethod( | 3460     return buildSuperNoSuchMethod( | 
| 3446         new Selector.index(), elements.getTypeMask(node), [visit(index)]); | 3461         new Selector.index(), elements.getTypeMask(node), [visit(index)]); | 
| 3447   } | 3462   } | 
| 3448 | 3463 | 
| 3449   @override | 3464   @override | 
| 3450   ir.Primitive visitUnresolvedSuperBinary( | 3465   ir.Primitive visitUnresolvedSuperBinary( | 
| 3451       ast.Send node, | 3466       ast.Send node, | 
| 3452       Element element, | 3467       Element element, | 
| 3453       op.BinaryOperator operator, | 3468       op.BinaryOperator operator, | 
| 3454       ast.Node argument, _) { | 3469       ast.Node argument, _) { | 
| 3455     return buildInstanceNoSuchMethod( | 3470     return buildSuperNoSuchMethod( | 
| 3456         elements.getSelector(node), | 3471         elements.getSelector(node), | 
| 3457         elements.getTypeMask(node), | 3472         elements.getTypeMask(node), | 
| 3458         [visit(argument)]); | 3473         [visit(argument)]); | 
| 3459   } | 3474   } | 
| 3460 | 3475 | 
| 3461   @override | 3476   @override | 
| 3462   ir.Primitive visitUnresolvedSuperUnary( | 3477   ir.Primitive visitUnresolvedSuperUnary( | 
| 3463       ast.Send node, | 3478       ast.Send node, | 
| 3464       op.UnaryOperator operator, | 3479       op.UnaryOperator operator, | 
| 3465       Element element, _) { | 3480       Element element, _) { | 
| 3466     return buildInstanceNoSuchMethod( | 3481     return buildSuperNoSuchMethod( | 
| 3467         elements.getSelector(node), elements.getTypeMask(node), []); | 3482         elements.getSelector(node), elements.getTypeMask(node), []); | 
| 3468   } | 3483   } | 
| 3469 | 3484 | 
| 3470   @override | 3485   @override | 
| 3471   ir.Primitive bulkHandleNode(ast.Node node, String message, _) { | 3486   ir.Primitive bulkHandleNode(ast.Node node, String message, _) { | 
| 3472     return giveup(node, "Unhandled node: ${message.replaceAll('#', '$node')}"); | 3487     return giveup(node, "Unhandled node: ${message.replaceAll('#', '$node')}"); | 
| 3473   } | 3488   } | 
| 3474 | 3489 | 
| 3475   @override | 3490   @override | 
| 3476   ir.Primitive bulkHandleError(ast.Node node, ErroneousElement error, _) { | 3491   ir.Primitive bulkHandleError(ast.Node node, ErroneousElement error, _) { | 
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3543     return irBuilder.buildStaticNoSuchMethod( | 3558     return irBuilder.buildStaticNoSuchMethod( | 
| 3544         new Selector.setter(field.memberName), | 3559         new Selector.setter(field.memberName), | 
| 3545         [visit(rhs)]); | 3560         [visit(rhs)]); | 
| 3546   } | 3561   } | 
| 3547 | 3562 | 
| 3548   @override | 3563   @override | 
| 3549   ir.Primitive visitFinalSuperFieldSet( | 3564   ir.Primitive visitFinalSuperFieldSet( | 
| 3550       ast.SendSet node, | 3565       ast.SendSet node, | 
| 3551       FieldElement field, | 3566       FieldElement field, | 
| 3552       ast.Node rhs, _) { | 3567       ast.Node rhs, _) { | 
| 3553     return buildInstanceNoSuchMethod( | 3568     return buildSuperNoSuchMethod( | 
| 3554         new Selector.setter(field.memberName), | 3569         new Selector.setter(field.memberName), | 
| 3555         elements.getTypeMask(node), | 3570         elements.getTypeMask(node), | 
| 3556         [visit(rhs)]); | 3571         [visit(rhs)]); | 
| 3557   } | 3572   } | 
| 3558 | 3573 | 
| 3559   @override | 3574   @override | 
| 3560   ir.Primitive handleImmutableLocalSet( | 3575   ir.Primitive handleImmutableLocalSet( | 
| 3561       ast.SendSet node, | 3576       ast.SendSet node, | 
| 3562       LocalElement local, | 3577       LocalElement local, | 
| 3563       ast.Node rhs, _) { | 3578       ast.Node rhs, _) { | 
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3610         new Selector.call(setter.memberName, callStructure), | 3625         new Selector.call(setter.memberName, callStructure), | 
| 3611         arguments); | 3626         arguments); | 
| 3612   } | 3627   } | 
| 3613 | 3628 | 
| 3614   @override | 3629   @override | 
| 3615   ir.Primitive visitSuperGetterSet( | 3630   ir.Primitive visitSuperGetterSet( | 
| 3616       ast.SendSet node, | 3631       ast.SendSet node, | 
| 3617       GetterElement getter, | 3632       GetterElement getter, | 
| 3618       ast.Node rhs, | 3633       ast.Node rhs, | 
| 3619       _) { | 3634       _) { | 
| 3620     return buildInstanceNoSuchMethod( | 3635     return buildSuperNoSuchMethod( | 
| 3621         new Selector.setter(getter.memberName), | 3636         new Selector.setter(getter.memberName), | 
| 3622         elements.getTypeMask(node), | 3637         elements.getTypeMask(node), | 
| 3623         [visit(rhs)]); | 3638         [visit(rhs)]); | 
| 3624   } | 3639   } | 
| 3625 | 3640 | 
| 3626   @override | 3641   @override | 
| 3627   ir.Primitive visitSuperMethodSet( | 3642   ir.Primitive visitSuperMethodSet( | 
| 3628       ast.Send node, | 3643       ast.Send node, | 
| 3629       MethodElement method, | 3644       MethodElement method, | 
| 3630       ast.Node rhs, | 3645       ast.Node rhs, | 
| 3631       _) { | 3646       _) { | 
| 3632     return buildInstanceNoSuchMethod( | 3647     return buildSuperNoSuchMethod( | 
| 3633         new Selector.setter(method.memberName), | 3648         new Selector.setter(method.memberName), | 
| 3634         elements.getTypeMask(node), | 3649         elements.getTypeMask(node), | 
| 3635         [visit(rhs)]); | 3650         [visit(rhs)]); | 
| 3636   } | 3651   } | 
| 3637 | 3652 | 
| 3638   @override | 3653   @override | 
| 3639   ir.Primitive visitSuperSetterGet( | 3654   ir.Primitive visitSuperSetterGet( | 
| 3640       ast.Send node, | 3655       ast.Send node, | 
| 3641       SetterElement setter, _) { | 3656       SetterElement setter, _) { | 
| 3642     return buildInstanceNoSuchMethod( | 3657     return buildSuperNoSuchMethod( | 
| 3643         new Selector.setter(setter.memberName), | 3658         new Selector.setter(setter.memberName), | 
| 3644         elements.getTypeMask(node), | 3659         elements.getTypeMask(node), | 
| 3645         []); | 3660         []); | 
| 3646   } | 3661   } | 
| 3647 | 3662 | 
| 3648   @override | 3663   @override | 
| 3649   ir.Primitive visitSuperSetterInvoke( | 3664   ir.Primitive visitSuperSetterInvoke( | 
| 3650       ast.Send node, | 3665       ast.Send node, | 
| 3651       SetterElement setter, | 3666       SetterElement setter, | 
| 3652       ast.NodeList argumentsNode, | 3667       ast.NodeList argumentsNode, | 
| 3653       CallStructure callStructure, _) { | 3668       CallStructure callStructure, _) { | 
| 3654     List<ir.Primitive> arguments = <ir.Primitive>[]; | 3669     List<ir.Primitive> arguments = <ir.Primitive>[]; | 
| 3655     callStructure = | 3670     callStructure = | 
| 3656         translateDynamicArguments(argumentsNode, callStructure, arguments); | 3671         translateDynamicArguments(argumentsNode, callStructure, arguments); | 
| 3657     return buildInstanceNoSuchMethod( | 3672     return buildSuperNoSuchMethod( | 
| 3658         new Selector.call(setter.memberName, callStructure), | 3673         new Selector.call(setter.memberName, callStructure), | 
| 3659         elements.getTypeMask(node), | 3674         elements.getTypeMask(node), | 
| 3660         arguments); | 3675         arguments); | 
| 3661   } | 3676   } | 
| 3662 | 3677 | 
| 3663   ir.FunctionDefinition nullIfGiveup(ir.FunctionDefinition action()) { | 3678   ir.FunctionDefinition nullIfGiveup(ir.FunctionDefinition action()) { | 
| 3664     try { | 3679     try { | 
| 3665       return action(); | 3680       return action(); | 
| 3666     } catch(e) { | 3681     } catch(e) { | 
| 3667       if (e == ABORT_IRNODE_BUILDER) { | 3682       if (e == ABORT_IRNODE_BUILDER) { | 
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3900   } | 3915   } | 
| 3901 | 3916 | 
| 3902   Element get closureConverter { | 3917   Element get closureConverter { | 
| 3903     return _backend.helpers.closureConverter; | 3918     return _backend.helpers.closureConverter; | 
| 3904   } | 3919   } | 
| 3905 | 3920 | 
| 3906   void addNativeMethod(FunctionElement function) { | 3921   void addNativeMethod(FunctionElement function) { | 
| 3907     _backend.emitter.nativeEmitter.nativeMethods.add(function); | 3922     _backend.emitter.nativeEmitter.nativeMethods.add(function); | 
| 3908   } | 3923   } | 
| 3909 } | 3924 } | 
| OLD | NEW | 
|---|