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

Side by Side Diff: pkg/kernel/lib/binary/ast_to_binary.dart

Issue 2973633002: [kernel] Change how TypeParameterType is calculated. (Closed)
Patch Set: Rebased 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 library kernel.ast_to_binary; 4 library kernel.ast_to_binary;
5 5
6 import '../ast.dart'; 6 import '../ast.dart';
7 import '../import_table.dart'; 7 import '../import_table.dart';
8 import 'tag.dart'; 8 import 'tag.dart';
9 import 'dart:convert'; 9 import 'dart:convert';
10 import 'dart:typed_data'; 10 import 'dart:typed_data';
(...skipping 1126 matching lines...) Expand 10 before | Expand all | Expand 10 after
1137 } 1137 }
1138 1138
1139 visitNamedType(NamedType node) { 1139 visitNamedType(NamedType node) {
1140 writeStringReference(node.name); 1140 writeStringReference(node.name);
1141 writeNode(node.type); 1141 writeNode(node.type);
1142 } 1142 }
1143 1143
1144 visitTypeParameterType(TypeParameterType node) { 1144 visitTypeParameterType(TypeParameterType node) {
1145 writeByte(Tag.TypeParameterType); 1145 writeByte(Tag.TypeParameterType);
1146 writeUInt30(_typeParameterIndexer[node.parameter]); 1146 writeUInt30(_typeParameterIndexer[node.parameter]);
1147 List<TypeParameter> typeParameters =
1148 _typeParameterIndexer.indexList[node.parameter];
1149 writeUInt30(typeParameters[0].binaryOffset);
1150 writeUInt30(typeParameters.indexOf(node.parameter));
1151 writeOptionalNode(node.promotedBound); 1147 writeOptionalNode(node.promotedBound);
1152 } 1148 }
1153 1149
1154 visitVectorType(VectorType node) { 1150 visitVectorType(VectorType node) {
1155 writeByte(Tag.VectorType); 1151 writeByte(Tag.VectorType);
1156 } 1152 }
1157 1153
1158 visitTypedefType(TypedefType node) { 1154 visitTypedefType(TypedefType node) {
1159 writeByte(Tag.TypedefType); 1155 writeByte(Tag.TypedefType);
1160 writeReference(node.typedefReference); 1156 writeReference(node.typedefReference);
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1256 1252
1257 void exit(SwitchStatement node) { 1253 void exit(SwitchStatement node) {
1258 stackHeight -= node.cases.length; 1254 stackHeight -= node.cases.length;
1259 } 1255 }
1260 1256
1261 int operator [](SwitchCase node) => index[node]; 1257 int operator [](SwitchCase node) => index[node];
1262 } 1258 }
1263 1259
1264 class TypeParameterIndexer { 1260 class TypeParameterIndexer {
1265 final Map<TypeParameter, int> index = <TypeParameter, int>{}; 1261 final Map<TypeParameter, int> index = <TypeParameter, int>{};
1266 final Map<TypeParameter, List<TypeParameter>> indexList =
1267 <TypeParameter, List<TypeParameter>>{};
1268 int stackHeight = 0; 1262 int stackHeight = 0;
1269 1263
1270 void enter(List<TypeParameter> typeParameters) { 1264 void enter(List<TypeParameter> typeParameters) {
1271 for (var parameter in typeParameters) { 1265 for (var parameter in typeParameters) {
1272 index[parameter] = stackHeight; 1266 index[parameter] = stackHeight;
1273 indexList[parameter] = typeParameters;
1274 ++stackHeight; 1267 ++stackHeight;
1275 } 1268 }
1276 } 1269 }
1277 1270
1278 void exit(List<TypeParameter> typeParameters) { 1271 void exit(List<TypeParameter> typeParameters) {
1279 stackHeight -= typeParameters.length; 1272 stackHeight -= typeParameters.length;
1280 } 1273 }
1281 1274
1282 int operator [](TypeParameter parameter) => index[parameter]; 1275 int operator [](TypeParameter parameter) => index[parameter];
1283 } 1276 }
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
1548 _sink.add(_buffer.sublist(0, length)); 1541 _sink.add(_buffer.sublist(0, length));
1549 _buffer = new Uint8List(SIZE); 1542 _buffer = new Uint8List(SIZE);
1550 flushedLength += length; 1543 flushedLength += length;
1551 length = 0; 1544 length = 0;
1552 } 1545 }
1553 1546
1554 void flushAndDestroy() { 1547 void flushAndDestroy() {
1555 _sink.add(_buffer.sublist(0, length)); 1548 _sink.add(_buffer.sublist(0, length));
1556 } 1549 }
1557 } 1550 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698