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

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

Issue 2886873008: [kernel] Streaming ScopeBuilder (Closed)
Patch Set: Created 3 years, 7 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_from_binary; 4 library kernel.ast_from_binary;
5 5
6 import 'dart:convert'; 6 import 'dart:convert';
7 import 'dart:typed_data'; 7 import 'dart:typed_data';
8 8
9 import '../ast.dart'; 9 import '../ast.dart';
10 import '../transformations/flags.dart'; 10 import '../transformations/flags.dart';
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 var canonicalName = readCanonicalNameReference(); 459 var canonicalName = readCanonicalNameReference();
460 var reference = canonicalName.getReference(); 460 var reference = canonicalName.getReference();
461 Field node = reference.node; 461 Field node = reference.node;
462 bool shouldWriteData = node == null || _isReadingLibraryImplementation; 462 bool shouldWriteData = node == null || _isReadingLibraryImplementation;
463 if (node == null) { 463 if (node == null) {
464 node = new Field(null, reference: reference); 464 node = new Field(null, reference: reference);
465 } 465 }
466 int fileOffset = readOffset(); 466 int fileOffset = readOffset();
467 int fileEndOffset = readOffset(); 467 int fileEndOffset = readOffset();
468 int flags = readByte(); 468 int flags = readByte();
469 readUInt(); // parent class binary offset.
469 var name = readName(); 470 var name = readName();
470 var fileUri = readUriReference(); 471 var fileUri = readUriReference();
471 var annotations = readAnnotationList(node); 472 var annotations = readAnnotationList(node);
472 debugPath.add(node.name?.name ?? 'field'); 473 debugPath.add(node.name?.name ?? 'field');
473 var type = readDartType(); 474 var type = readDartType();
474 var initializer = readExpressionOption(); 475 var initializer = readExpressionOption();
475 int transformerFlags = getAndResetTransformerFlags(); 476 int transformerFlags = getAndResetTransformerFlags();
476 debugPath.removeLast(); 477 debugPath.removeLast();
477 if (shouldWriteData) { 478 if (shouldWriteData) {
478 node.fileOffset = fileOffset; 479 node.fileOffset = fileOffset;
(...skipping 16 matching lines...) Expand all
495 var canonicalName = readCanonicalNameReference(); 496 var canonicalName = readCanonicalNameReference();
496 var reference = canonicalName.getReference(); 497 var reference = canonicalName.getReference();
497 Constructor node = reference.node; 498 Constructor node = reference.node;
498 bool shouldWriteData = node == null || _isReadingLibraryImplementation; 499 bool shouldWriteData = node == null || _isReadingLibraryImplementation;
499 if (node == null) { 500 if (node == null) {
500 node = new Constructor(null, reference: reference); 501 node = new Constructor(null, reference: reference);
501 } 502 }
502 var fileOffset = readOffset(); 503 var fileOffset = readOffset();
503 var fileEndOffset = readOffset(); 504 var fileEndOffset = readOffset();
504 var flags = readByte(); 505 var flags = readByte();
506 readUInt(); // parent class binary offset.
505 var name = readName(); 507 var name = readName();
506 var annotations = readAnnotationList(node); 508 var annotations = readAnnotationList(node);
507 debugPath.add(node.name?.name ?? 'constructor'); 509 debugPath.add(node.name?.name ?? 'constructor');
508 var function = readFunctionNode(); 510 var function = readFunctionNode();
509 pushVariableDeclarations(function.positionalParameters); 511 pushVariableDeclarations(function.positionalParameters);
510 pushVariableDeclarations(function.namedParameters); 512 pushVariableDeclarations(function.namedParameters);
511 _fillTreeNodeList(node.initializers, readInitializer, node); 513 _fillTreeNodeList(node.initializers, readInitializer, node);
512 variableStack.length = 0; 514 variableStack.length = 0;
513 var transformerFlags = getAndResetTransformerFlags(); 515 var transformerFlags = getAndResetTransformerFlags();
514 debugPath.removeLast(); 516 debugPath.removeLast();
(...skipping 17 matching lines...) Expand all
532 Procedure node = reference.node; 534 Procedure node = reference.node;
533 bool shouldWriteData = node == null || _isReadingLibraryImplementation; 535 bool shouldWriteData = node == null || _isReadingLibraryImplementation;
534 if (node == null) { 536 if (node == null) {
535 node = new Procedure(null, null, null, reference: reference); 537 node = new Procedure(null, null, null, reference: reference);
536 } 538 }
537 var fileOffset = readOffset(); 539 var fileOffset = readOffset();
538 var fileEndOffset = readOffset(); 540 var fileEndOffset = readOffset();
539 int kindIndex = readByte(); 541 int kindIndex = readByte();
540 var kind = ProcedureKind.values[kindIndex]; 542 var kind = ProcedureKind.values[kindIndex];
541 var flags = readByte(); 543 var flags = readByte();
544 readUInt(); // parent class binary offset.
542 var name = readName(); 545 var name = readName();
543 var fileUri = readUriReference(); 546 var fileUri = readUriReference();
544 var annotations = readAnnotationList(node); 547 var annotations = readAnnotationList(node);
545 debugPath.add(node.name?.name ?? 'procedure'); 548 debugPath.add(node.name?.name ?? 'procedure');
546 var function = readFunctionNodeOption(); 549 var function = readFunctionNodeOption();
547 var transformerFlags = getAndResetTransformerFlags(); 550 var transformerFlags = getAndResetTransformerFlags();
548 debugPath.removeLast(); 551 debugPath.removeLast();
549 if (shouldWriteData) { 552 if (shouldWriteData) {
550 node.fileOffset = fileOffset; 553 node.fileOffset = fileOffset;
551 node.fileEndOffset = fileEndOffset; 554 node.fileEndOffset = fileEndOffset;
(...skipping 28 matching lines...) Expand all
580 default: 583 default:
581 throw fail('Invalid initializer tag: $tag'); 584 throw fail('Invalid initializer tag: $tag');
582 } 585 }
583 } 586 }
584 587
585 FunctionNode readFunctionNodeOption() { 588 FunctionNode readFunctionNodeOption() {
586 return readAndCheckOptionTag() ? readFunctionNode() : null; 589 return readAndCheckOptionTag() ? readFunctionNode() : null;
587 } 590 }
588 591
589 FunctionNode readFunctionNode() { 592 FunctionNode readFunctionNode() {
593 int tag = readByte();
594 assert(tag == Tag.FunctionNode);
590 int offset = readOffset(); 595 int offset = readOffset();
591 int endOffset = readOffset(); 596 int endOffset = readOffset();
592 AsyncMarker asyncMarker = AsyncMarker.values[readByte()]; 597 AsyncMarker asyncMarker = AsyncMarker.values[readByte()];
593 AsyncMarker dartAsyncMarker = AsyncMarker.values[readByte()]; 598 AsyncMarker dartAsyncMarker = AsyncMarker.values[readByte()];
594 int typeParameterStackHeight = typeParameterStack.length; 599 int typeParameterStackHeight = typeParameterStack.length;
595 var typeParameters = readAndPushTypeParameterList(); 600 var typeParameters = readAndPushTypeParameterList();
596 var requiredParameterCount = readUInt(); 601 var requiredParameterCount = readUInt();
597 int variableStackHeight = variableStack.length; 602 int variableStackHeight = variableStack.length;
598 var positional = readAndPushVariableDeclarationList(); 603 var positional = readAndPushVariableDeclarationList();
599 var named = readAndPushVariableDeclarationList(); 604 var named = readAndPushVariableDeclarationList();
(...skipping 572 matching lines...) Expand 10 before | Expand all | Expand 10 after
1172 ..fileOffset = offset 1177 ..fileOffset = offset
1173 ..fileEqualsOffset = fileEqualsOffset; 1178 ..fileEqualsOffset = fileEqualsOffset;
1174 } 1179 }
1175 1180
1176 int readOffset() { 1181 int readOffset() {
1177 // Offset is saved as unsigned, 1182 // Offset is saved as unsigned,
1178 // but actually ranges from -1 and up (thus the -1) 1183 // but actually ranges from -1 and up (thus the -1)
1179 return readUInt() - 1; 1184 return readUInt() - 1;
1180 } 1185 }
1181 } 1186 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698