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

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

Issue 1511383002: Revert "Canonical output ordering for constants." (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years 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/constant_ordering.dart
diff --git a/pkg/compiler/lib/src/js_emitter/constant_ordering.dart b/pkg/compiler/lib/src/js_emitter/constant_ordering.dart
deleted file mode 100644
index 0c500dede3431fdd26846489372866174527cbfb..0000000000000000000000000000000000000000
--- a/pkg/compiler/lib/src/js_emitter/constant_ordering.dart
+++ /dev/null
@@ -1,212 +0,0 @@
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library dart2js.js_emitter.constant_ordering;
-
-import '../constants/values.dart';
-
-import '../common.dart';
-//import '../core_types.dart';
-import '../dart_types.dart';
-import '../elements/elements.dart'
- show Element,
- Elements,
- FieldElement;
-import '../tree/tree.dart' show DartString;
-
-/// A canonical but arbrary ordering of constants. The ordering is 'stable'
-/// under perturbation of the source.
-int deepCompareConstants(ConstantValue a, ConstantValue b) {
- return _CompareVisitor.compareValues(a, b);
-}
-
-class _CompareVisitor implements ConstantValueVisitor<int, ConstantValue> {
- const _CompareVisitor();
-
- static int compareValues(ConstantValue a, ConstantValue b) {
- if (identical(a, b)) return 0;
- int r = _KindVisitor.kind(a).compareTo(_KindVisitor.kind(b));
- if (r != 0) return r;
- r = a.accept(const _CompareVisitor(), b);
- return r;
- }
-
- static int compareNullable(int compare(a, b), a, b) {
- if (a == null && b == null) return 0;
- if (a == null) return -1;
- if (b == null) return 1;
- return compare(a, b);
- }
-
- static int compareLists(int compare(a, b), List a, List b) {
- int r = a.length.compareTo(b.length);
- if (r != 0) return r;
- for (int i = 0; i < a.length; i++) {
- r = compare(a[i], b[i]);
- if (r != 0) return r;
- }
- return 0;
- }
-
- static int compareElements(Element a, Element b) {
- int r = a.name.compareTo(b.name);
- if (r != 0) return r;
- return Elements.compareByPosition(a, b);
- }
-
- static int compareDartTypes(DartType a, DartType b) {
- if (a == b) return 0;
- int r = a.kind.index.compareTo(b.kind.index);
- if (r != 0) return r;
- r = compareNullable(compareElements, a.element, b.element);
- if (r != 0) return r;
-
- if (a is GenericType) {
- GenericType aGeneric = a;
- GenericType bGeneric = b;
- r = compareLists(compareDartTypes,
- aGeneric.typeArguments, bGeneric.typeArguments);
- if (r != 0) return r;
- }
- throw 'unexpected compareDartTypes $a $b';
- }
-
- int visitFunction(FunctionConstantValue a, FunctionConstantValue b) {
- return compareElements(a.element, b.element);
- }
-
- int visitNull(NullConstantValue a, NullConstantValue b) {
- return 0;
- }
-
- int visitInt(IntConstantValue a, IntConstantValue b) {
- return a.primitiveValue.compareTo(b.primitiveValue);
- }
-
- int visitDouble(DoubleConstantValue a, DoubleConstantValue b) {
- return a.primitiveValue.compareTo(b.primitiveValue);
- }
-
- int visitBool(BoolConstantValue a, BoolConstantValue b) {
- int aInt = a.primitiveValue ? 1 : 0;
- int bInt = b.primitiveValue ? 1 : 0;
- return aInt.compareTo(bInt);
- }
-
- int visitString(StringConstantValue a, StringConstantValue b) {
- DartString aString = a.primitiveValue;
- DartString bString = b.primitiveValue;
- int r = aString.length.compareTo(bString.length);
- if (r != 0) return r;
- return aString.slowToString().compareTo(bString.slowToString());
- }
-
- int visitList(ListConstantValue a, ListConstantValue b) {
- int r = compareLists(compareValues, a.entries, b.entries);
- if (r != 0) return r;
- return compareDartTypes(a.type, b.type);
- }
-
- int visitMap(MapConstantValue a, MapConstantValue b) {
- int r = compareLists(compareValues, a.keys, b.keys);
- if (r != 0) return r;
- r = compareLists(compareValues, a.values, b.values);
- if (r != 0) return r;
- return compareDartTypes(a.type, b.type);
- }
-
- int visitConstructed(ConstructedConstantValue a, ConstructedConstantValue b) {
- int r = compareDartTypes(a.type, b.type);
- if (r != 0) return r;
-
- List<FieldElement> aFields = a.fields.keys.toList()..sort(compareElements);
- List<FieldElement> bFields = b.fields.keys.toList()..sort(compareElements);
-
- r = compareLists(compareElements, aFields, bFields);
- if (r != 0) return r;
-
- return compareLists(compareValues,
- aFields.map((field) => a.fields[field]).toList(),
- aFields.map((field) => b.fields[field]).toList());
- }
-
- int visitType(TypeConstantValue a, TypeConstantValue b) {
- int r = compareDartTypes(a.representedType, b.representedType);
- if (r != 0) return r;
- return compareDartTypes(a.type, b.type);
- }
-
- int visitInterceptor(InterceptorConstantValue a, InterceptorConstantValue b) {
- return compareDartTypes(a.dispatchedType, b.dispatchedType);
- }
-
- int visitSynthetic(SyntheticConstantValue a, SyntheticConstantValue b) {
- // [SyntheticConstantValue]s have abstract fields that are set only by
- // convention. Lucky for us, they do not occur as top level constant, only
- // as elements of a few constants. If this becomes a source of instability,
- // we will need to add a total ordering on JavaScript ASTs including
- // deferred elements.
- SyntheticConstantKind aKind = a.kind;
- SyntheticConstantKind bKind = b.kind;
- int r = aKind.index - bKind.index;
- if (r != 0) return r;
- switch (a.kind) {
- case SyntheticConstantKind.DUMMY_INTERCEPTOR:
- case SyntheticConstantKind.EMPTY_VALUE:
- // Never emitted.
- return 0:
-
- case SyntheticConstantKind.TYPEVARIABLE_REFERENCE:
- // An opaque deferred JS AST reference to a type in reflection data.
- return 0;
- case SyntheticConstantKind.NAME:
- // An opaque deferred JS AST reference to a name.
- return 0;
- default:
- // Should not happen.
- throw 'unexpected SyntheticConstantKind $akind';
- }
- }
-
- int visitDeferred(DeferredConstantValue a, DeferredConstantValue b) {
- int r = compareValues(a.referenced, b.referenced);
- if (r != 0) return r;
- return compareElements(a.prefix, b.prefix);
- }
-}
-
-class _KindVisitor implements ConstantValueVisitor<int, Null> {
- const _KindVisitor();
-
- static const int FUNCTION = 1;
- static const int NULL = 2;
- static const int INT = 3;
- static const int DOUBLE = 4;
- static const int BOOL = 5;
- static const int STRING = 6;
- static const int LIST = 7;
- static const int MAP = 8;
- static const int CONSTRUCTED = 9;
- static const int TYPE = 10;
- static const int INTERCEPTOR = 11;
- static const int SYNTHETIC = 12;
- static const int DEFERRED = 13;
-
- static int kind(ConstantValue constant) =>
- constant.accept(const _KindVisitor(), null);
-
- int visitFunction(FunctionConstantValue a, _) => FUNCTION;
- int visitNull(NullConstantValue a, _) => NULL;
- int visitInt(IntConstantValue a, _) => INT;
- int visitDouble(DoubleConstantValue a, _) => DOUBLE;
- int visitBool(BoolConstantValue a, _) => BOOL;
- int visitString(StringConstantValue a, _) => STRING;
- int visitList(ListConstantValue a, _) => LIST;
- int visitMap(MapConstantValue a, _) => MAP;
- int visitConstructed(ConstructedConstantValue a, _) => CONSTRUCTED;
- int visitType(TypeConstantValue a, _) => TYPE;
- int visitInterceptor(InterceptorConstantValue a, _) => INTERCEPTOR;
- int visitSynthetic(SyntheticConstantValue a, _) => SYNTHETIC;
- int visitDeferred(DeferredConstantValue a, _) => DEFERRED;
-}
« no previous file with comments | « pkg/compiler/lib/src/js_backend/namer.dart ('k') | pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698