Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: pkg/compiler/lib/src/ssa/builder.dart

Issue 2150313003: Add JSNative utility class with static methods methods to efficiently manipulate typed JSInterop ob… (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Fix analyzer warnings in js_util_test, skip js_util_test in csp mode and baseline expectations for … Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 import 'dart:collection'; 5 import 'dart:collection';
6 6
7 import 'package:js_runtime/shared/embedded_names.dart'; 7 import 'package:js_runtime/shared/embedded_names.dart';
8 8
9 import '../closure.dart'; 9 import '../closure.dart';
10 import '../common.dart'; 10 import '../common.dart';
(...skipping 5601 matching lines...) Expand 10 before | Expand all | Expand 10 after
5612 .hasAnonymousAnnotation(element.contextClass)) { 5612 .hasAnonymousAnnotation(element.contextClass)) {
5613 // Factory constructor that is syntactic sugar for creating a JavaScript 5613 // Factory constructor that is syntactic sugar for creating a JavaScript
5614 // object literal. 5614 // object literal.
5615 ConstructorElement constructor = element; 5615 ConstructorElement constructor = element;
5616 FunctionSignature params = constructor.functionSignature; 5616 FunctionSignature params = constructor.functionSignature;
5617 int i = 0; 5617 int i = 0;
5618 int positions = 0; 5618 int positions = 0;
5619 var filteredArguments = <HInstruction>[]; 5619 var filteredArguments = <HInstruction>[];
5620 var parameterNameMap = new Map<String, js.Expression>(); 5620 var parameterNameMap = new Map<String, js.Expression>();
5621 params.orderedForEachParameter((ParameterElement parameter) { 5621 params.orderedForEachParameter((ParameterElement parameter) {
5622 // TODO(jacobr): throw if parameter names do not match names of property 5622 // TODO(jacobr): consider throwing if parameter names do not match
5623 // names in the class. 5623 // names of properties in the class.
5624 assert(parameter.isNamed); 5624 assert(parameter.isNamed);
5625 HInstruction argument = arguments[i]; 5625 HInstruction argument = arguments[i];
5626 if (argument != null) { 5626 if (argument != null) {
5627 filteredArguments.add(argument); 5627 filteredArguments.add(argument);
5628 parameterNameMap[parameter.name] = 5628 var jsName =
5629 new js.InterpolatedExpression(positions++); 5629 backend.nativeData.getUnescapedJSInteropName(parameter.name);
5630 parameterNameMap[jsName] = new js.InterpolatedExpression(positions++);
5630 } 5631 }
5631 i++; 5632 i++;
5632 }); 5633 });
5633 var codeTemplate = 5634 var codeTemplate =
5634 new js.Template(null, js.objectLiteral(parameterNameMap)); 5635 new js.Template(null, js.objectLiteral(parameterNameMap));
5635 5636
5636 var nativeBehavior = new native.NativeBehavior() 5637 var nativeBehavior = new native.NativeBehavior()
5637 ..codeTemplate = codeTemplate; 5638 ..codeTemplate = codeTemplate;
5638 if (compiler.options.trustJSInteropTypeAnnotations) { 5639 if (compiler.options.trustJSInteropTypeAnnotations) {
5639 nativeBehavior.typesReturned.add(constructor.enclosingClass.thisType); 5640 nativeBehavior.typesReturned.add(constructor.enclosingClass.thisType);
(...skipping 2990 matching lines...) Expand 10 before | Expand all | Expand 10 after
8630 const _LoopTypeVisitor(); 8631 const _LoopTypeVisitor();
8631 int visitNode(ast.Node node) => HLoopBlockInformation.NOT_A_LOOP; 8632 int visitNode(ast.Node node) => HLoopBlockInformation.NOT_A_LOOP;
8632 int visitWhile(ast.While node) => HLoopBlockInformation.WHILE_LOOP; 8633 int visitWhile(ast.While node) => HLoopBlockInformation.WHILE_LOOP;
8633 int visitFor(ast.For node) => HLoopBlockInformation.FOR_LOOP; 8634 int visitFor(ast.For node) => HLoopBlockInformation.FOR_LOOP;
8634 int visitDoWhile(ast.DoWhile node) => HLoopBlockInformation.DO_WHILE_LOOP; 8635 int visitDoWhile(ast.DoWhile node) => HLoopBlockInformation.DO_WHILE_LOOP;
8635 int visitAsyncForIn(ast.AsyncForIn node) => HLoopBlockInformation.FOR_IN_LOOP; 8636 int visitAsyncForIn(ast.AsyncForIn node) => HLoopBlockInformation.FOR_IN_LOOP;
8636 int visitSyncForIn(ast.SyncForIn node) => HLoopBlockInformation.FOR_IN_LOOP; 8637 int visitSyncForIn(ast.SyncForIn node) => HLoopBlockInformation.FOR_IN_LOOP;
8637 int visitSwitchStatement(ast.SwitchStatement node) => 8638 int visitSwitchStatement(ast.SwitchStatement node) =>
8638 HLoopBlockInformation.SWITCH_CONTINUE_LOOP; 8639 HLoopBlockInformation.SWITCH_CONTINUE_LOOP;
8639 } 8640 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698