@@ -1109,7 +1109,7 @@ class Translator with KernelNodes {
11091109 compilationQueue.add (CompilationTask (
11101110 function,
11111111 _ClosureDynamicEntryGenerator (
1112- this , functionNode, target, paramInfo, name, function)));
1112+ this , target, paramInfo, name, function)));
11131113 return function;
11141114 }
11151115
@@ -2047,14 +2047,13 @@ class _ClosureTrampolineGenerator implements CodeGenerator {
20472047/// entries.
20482048class _ClosureDynamicEntryGenerator implements CodeGenerator {
20492049 final Translator translator;
2050- final FunctionNode functionNode;
20512050 final w.BaseFunction target;
20522051 final ParameterInfo paramInfo;
20532052 final String name;
20542053 final w.FunctionBuilder function;
20552054
2056- _ClosureDynamicEntryGenerator (this .translator, this .functionNode, this .target,
2057- this .paramInfo, this .name, this .function);
2055+ _ClosureDynamicEntryGenerator (
2056+ this .translator, this .target, this . paramInfo, this .name, this .function);
20582057
20592058 @override
20602059 void generate (w.InstructionsBuilder b, List <w.Local > paramLocals,
@@ -2063,8 +2062,6 @@ class _ClosureDynamicEntryGenerator implements CodeGenerator {
20632062
20642063 final b = function.body;
20652064
2066- final int typeCount = functionNode.typeParameters.length;
2067-
20682065 final closureLocal = function.locals[0 ];
20692066 final typeArgsListLocal = function.locals[1 ];
20702067 final posArgsListLocal = function.locals[2 ];
@@ -2098,7 +2095,7 @@ class _ClosureDynamicEntryGenerator implements CodeGenerator {
20982095 }
20992096
21002097 // Push type arguments
2101- for (int typeIdx = 0 ; typeIdx < typeCount ; typeIdx += 1 ) {
2098+ for (int typeIdx = 0 ; typeIdx < paramInfo.typeParamCount ; typeIdx += 1 ) {
21022099 b.local_get (typeArgsListLocal);
21032100 b.i32_const (typeIdx);
21042101 b.array_get (translator.typeArrayType);
@@ -2134,22 +2131,11 @@ class _ClosureDynamicEntryGenerator implements CodeGenerator {
21342131
21352132 // Push named arguments
21362133
2137- Expression ? initializerForNamedParamInMember (String paramName) {
2138- for (int i = 0 ; i < functionNode.namedParameters.length; i += 1 ) {
2139- if (functionNode.namedParameters[i].name == paramName) {
2140- return functionNode.namedParameters[i].initializer;
2141- }
2142- }
2143- return null ;
2144- }
2145-
21462134 final namedArgValueIndexLocal = b
21472135 .addLocal (translator.classInfo[translator.boxedIntClass]! .nullableType);
21482136
21492137 for (String paramName in paramInfo.names) {
21502138 final Constant ? paramInfoDefaultValue = paramInfo.named[paramName];
2151- final Expression ? functionNodeDefaultValue =
2152- initializerForNamedParamInMember (paramName);
21532139
21542140 // Get passed value
21552141 b.local_get (namedArgsListLocal);
@@ -2160,7 +2146,7 @@ class _ClosureDynamicEntryGenerator implements CodeGenerator {
21602146 translator.callReference (translator.getNamedParameterIndex.reference, b);
21612147 b.local_set (namedArgValueIndexLocal);
21622148
2163- if (functionNodeDefaultValue == null && paramInfoDefaultValue == null ) {
2149+ if (paramInfoDefaultValue == null ) {
21642150 // Shape check passed, parameter must be passed
21652151 b.local_get (namedArgsListLocal);
21662152 b.local_get (namedArgValueIndexLocal);
@@ -2176,20 +2162,8 @@ class _ClosureDynamicEntryGenerator implements CodeGenerator {
21762162 b.local_get (namedArgValueIndexLocal);
21772163 b.ref_is_null ();
21782164 b.if_ ([], [translator.topType]);
2179- if (functionNodeDefaultValue != null ) {
2180- // Used by the member, has a default value
2181- translator.constants.instantiateConstant (
2182- b,
2183- (functionNodeDefaultValue as ConstantExpression ).constant,
2184- translator.topType);
2185- } else {
2186- // Not used by the member
2187- translator.constants.instantiateConstant (
2188- b,
2189- paramInfoDefaultValue! ,
2190- translator.topType,
2191- );
2192- }
2165+ translator.constants.instantiateConstant (
2166+ b, paramInfoDefaultValue, translator.topType);
21932167 b.else_ (); // value index not null
21942168 b.local_get (namedArgsListLocal);
21952169 b.local_get (namedArgValueIndexLocal);
0 commit comments