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

Unified Diff: pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart

Issue 3001823002: Revert "Various redemptions" (Closed)
Patch Set: 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
Index: pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
index f0290b08eb0f00bf4d22075fa22ada35ffdb951d..e50a7d7ee1ea6f54ff82d02a251d4f9fe324cd21 100644
--- a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
+++ b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
@@ -15,8 +15,16 @@ import '../../constants/values.dart'
import '../../common_elements.dart' show CommonElements, ElementEnvironment;
import '../../deferred_load.dart' show DeferredLoadTask, OutputUnit;
import '../../elements/elements.dart'
- show ClassElement, FieldElement, LibraryElement, MethodElement;
+ show
+ ClassElement,
+ FieldElement,
+ FunctionSignature,
+ LibraryElement,
+ MemberElement,
+ MethodElement,
+ ParameterElement;
import '../../elements/entities.dart';
+import '../../elements/resolution_types.dart' show ResolutionDartType;
import '../../elements/types.dart';
import '../../js/js.dart' as js;
import '../../js_backend/backend.dart' show SuperMemberData;
@@ -184,7 +192,7 @@ class ProgramBuilder {
///
/// Also contains classes that are not tracked by the profile run (like
/// interceptors, ...).
- Set<ClassEntity> _notSoftDeferred;
+ Set<ClassElement> _notSoftDeferred;
Program buildProgram({bool storeFunctionTypesInMetadata: false}) {
collector.collect();
@@ -318,17 +326,16 @@ class ProgramBuilder {
String data = new File(allocatedClassesPath).readAsStringSync();
Set<String> allocatedClassesKeys = JSON.decode(data).keys.toSet();
- Set<ClassEntity> allocatedClasses = new Set<ClassEntity>();
+ Set<ClassElement> allocatedClasses = new Set<ClassElement>();
// Collects all super and mixin classes of a class.
- void collect(ClassEntity element) {
+ void collect(ClassElement element) {
allocatedClasses.add(element);
- if (_elementEnvironment.isMixinApplication(element)) {
+ if (element.isMixinApplication) {
collect(_elementEnvironment.getEffectiveMixinClass(element));
}
- ClassEntity superclass = _elementEnvironment.getSuperClass(element);
- if (superclass != null) {
- collect(superclass);
+ if (element.superclass != null) {
+ collect(element.superclass);
}
}
@@ -336,7 +343,7 @@ class ProgramBuilder {
// collect its dependencies (supers and mixins) and mark them as
// not-soft-deferrable.
collector.outputClassLists.forEach((_, List<ClassEntity> elements) {
- for (ClassEntity element in elements) {
+ for (ClassElement element in elements) {
// TODO(29574): share the encoding of the element with the code
// that emits the profile-run.
var key = "${element.library.canonicalUri}:${element.name}";
@@ -555,7 +562,7 @@ class ProgramBuilder {
if (member.isFunction) {
MethodElement fn = member;
- functionType = _elementEnvironment.getFunctionType(fn);
+ functionType = fn.type;
} else if (member.isGetter) {
if (_options.trustTypeAnnotations) {
DartType returnType =
@@ -779,7 +786,7 @@ class ProgramBuilder {
for (Field field in instanceFields) {
if (field.needsCheckedSetter) {
assert(!field.needsUncheckedSetter);
- FieldEntity element = field.element;
+ FieldElement element = field.element;
js.Expression code = _generatedCode[element];
assert(code != null);
js.Name name = _namer.deriveSetterName(field.accessorName);
@@ -856,28 +863,23 @@ class ProgramBuilder {
_closedWorld.getMightBePassedToApply(method);
}
- /* Map | List */ _computeParameterDefaultValues(FunctionEntity method) {
+ /* Map | List */ _computeParameterDefaultValues(FunctionSignature signature) {
var /* Map | List */ optionalParameterDefaultValues;
- ParameterStructure parameterStructure = method.parameterStructure;
- if (parameterStructure.namedParameters.isNotEmpty) {
+ if (signature.optionalParametersAreNamed) {
optionalParameterDefaultValues = new Map<String, ConstantValue>();
- _worldBuilder.forEachParameter(method,
- (DartType type, String name, ConstantValue defaultValue) {
- if (parameterStructure.namedParameters.contains(name)) {
- assert(defaultValue != null);
- optionalParameterDefaultValues[name] = defaultValue;
- }
+ signature.forEachOptionalParameter((_parameter) {
+ ParameterElement parameter = _parameter;
+ ConstantValue def =
+ _constantHandler.getConstantValue(parameter.constant);
+ optionalParameterDefaultValues[parameter.name] = def;
});
} else {
optionalParameterDefaultValues = <ConstantValue>[];
- int index = 0;
- _worldBuilder.forEachParameter(method,
- (DartType type, String name, ConstantValue defaultValue) {
- if (index >= parameterStructure.requiredParameters) {
- assert(defaultValue != null);
- optionalParameterDefaultValues.add(defaultValue);
- }
- index++;
+ signature.forEachOptionalParameter((_parameter) {
+ ParameterElement parameter = _parameter;
+ ConstantValue def =
+ _constantHandler.getConstantValue(parameter.constant);
+ optionalParameterDefaultValues.add(def);
});
}
return optionalParameterDefaultValues;
@@ -943,10 +945,11 @@ class ProgramBuilder {
var /* List | Map */ optionalParameterDefaultValues;
if (canBeApplied || canBeReflected) {
// TODO(redemption): Handle function entities.
- FunctionEntity method = element;
- ParameterStructure parameterStructure = method.parameterStructure;
- requiredParameterCount = parameterStructure.requiredParameters;
- optionalParameterDefaultValues = _computeParameterDefaultValues(method);
+ MethodElement method = element;
+ FunctionSignature signature = method.functionSignature;
+ requiredParameterCount = signature.requiredParameterCount;
+ optionalParameterDefaultValues =
+ _computeParameterDefaultValues(signature);
}
return new InstanceMethod(element, name, code,
@@ -992,7 +995,7 @@ class ProgramBuilder {
/// Stub methods may have an element that can be used for code-size
/// attribution.
Method _buildStubMethod(js.Name name, js.Expression code,
- {MemberEntity element}) {
+ {MemberElement element}) {
return new StubMethod(name, code, element: element);
}
@@ -1082,15 +1085,8 @@ class ProgramBuilder {
needsCheckedSetter));
}
- FieldVisitor visitor = new FieldVisitor(
- _options,
- _elementEnvironment,
- _commonElements,
- _worldBuilder,
- _nativeData,
- _mirrorsData,
- _namer,
- _closedWorld);
+ FieldVisitor visitor = new FieldVisitor(_options, _elementEnvironment,
+ _worldBuilder, _nativeData, _mirrorsData, _namer, _closedWorld);
visitor.visitFields(visitField,
visitStatics: visitStatics, library: library, cls: cls);
@@ -1156,10 +1152,11 @@ class ProgramBuilder {
var /* List | Map */ optionalParameterDefaultValues;
if (canBeApplied || canBeReflected) {
// TODO(redemption): Support entities;
- FunctionEntity method = element;
- ParameterStructure parameterStructure = method.parameterStructure;
- requiredParameterCount = parameterStructure.requiredParameters;
- optionalParameterDefaultValues = _computeParameterDefaultValues(method);
+ MethodElement method = element;
+ FunctionSignature signature = method.functionSignature;
+ requiredParameterCount = signature.requiredParameterCount;
+ optionalParameterDefaultValues =
+ _computeParameterDefaultValues(signature);
}
// TODO(floitsch): we shouldn't update the registry in the middle of

Powered by Google App Engine
This is Rietveld 408576698