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

Unified Diff: pkg/compiler/lib/src/js_model/locals.dart

Issue 3002313002: Use KernelTypeGraphBuilder in KernelInferrerEngine (Closed)
Patch Set: Updated cf. comments. Created 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/js_model/js_strategy.dart ('k') | pkg/compiler/lib/src/kernel/element_map.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/js_model/locals.dart
diff --git a/pkg/compiler/lib/src/js_model/locals.dart b/pkg/compiler/lib/src/js_model/locals.dart
index 84d3d2876f32c43fc0ca40d57e83d06f8b97a11c..53bb0151c27ab7a1cf44e24c8c2cb6864db6e562 100644
--- a/pkg/compiler/lib/src/js_model/locals.dart
+++ b/pkg/compiler/lib/src/js_model/locals.dart
@@ -37,6 +37,7 @@ class KernelToLocalsMapImpl implements KernelToLocalsMap {
Map<ir.VariableDeclaration, JLocal> _map = <ir.VariableDeclaration, JLocal>{};
Map<ir.TreeNode, JJumpTarget> _jumpTargetMap;
Set<ir.BreakStatement> _breaksAsContinue;
+ List<ir.VariableDeclaration> _parameterList = <ir.VariableDeclaration>[];
MemberEntity get currentMember => _members.last;
@@ -137,12 +138,27 @@ class KernelToLocalsMapImpl implements KernelToLocalsMap {
@override
Local getLocalVariable(ir.VariableDeclaration node) {
return _map.putIfAbsent(node, () {
- return new JLocal(
- node.name, currentMember, node.parent is ir.FunctionNode);
+ Local local;
+ if (node.parent is ir.FunctionNode) {
+ local = new JParameter(_parameterList.length, node.name, currentMember);
+ _parameterList.add(node);
+ } else {
+ local = new JLocal(node.name, currentMember);
+ }
+ return local;
});
}
@override
+ ir.FunctionNode getFunctionNodeForParameter(covariant JParameter parameter) {
+ return _parameterList[parameter.parameterIndex].parent;
+ }
+
+ ir.DartType getParameterType(covariant JParameter parameter) {
+ return _parameterList[parameter.parameterIndex].type;
+ }
+
+ @override
CapturedLoopScope getCapturedLoopScope(
ClosureDataLookup closureLookup, ir.TreeNode node) {
return closureLookup.getCapturedLoopScope(node);
@@ -347,18 +363,19 @@ class JLocal implements Local {
final String name;
final MemberEntity memberContext;
- /// True if this local represents a local parameter.
- final bool isRegularParameter;
+ JLocal(this.name, this.memberContext);
- JLocal(this.name, this.memberContext, [isParameter = false])
- : isRegularParameter = isParameter;
+ /// True if this local represents a local parameter.
+ bool get isRegularParameter => false;
@override
Entity get executableContext => memberContext;
+ String get _kind => 'local';
+
String toString() {
StringBuffer sb = new StringBuffer();
- sb.write('local(');
+ sb.write('$_kind(');
if (memberContext.enclosingClass != null) {
sb.write(memberContext.enclosingClass.name);
sb.write('.');
@@ -370,3 +387,14 @@ class JLocal implements Local {
return sb.toString();
}
}
+
+class JParameter extends JLocal {
+ final int parameterIndex;
+
+ JParameter(this.parameterIndex, String name, MemberEntity memberContext)
+ : super(name, memberContext);
+
+ bool get isRegularParameter => true;
+
+ String get _kind => 'parameter';
+}
« no previous file with comments | « pkg/compiler/lib/src/js_model/js_strategy.dart ('k') | pkg/compiler/lib/src/kernel/element_map.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698