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

Unified Diff: sdk/lib/_internal/compiler/implementation/js_backend/constant_system_javascript.dart

Issue 614993002: Rename Constant to ConstantValue and ConstExp to ConstantExpression. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments. Created 6 years, 3 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: sdk/lib/_internal/compiler/implementation/js_backend/constant_system_javascript.dart
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/constant_system_javascript.dart b/sdk/lib/_internal/compiler/implementation/js_backend/constant_system_javascript.dart
index eedf2340d98d230ecf66d0bf77bfccf2de31bafa..10a279d8a8ebdf0c399adf0e2c657a28d16e2ea3 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/constant_system_javascript.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/constant_system_javascript.dart
@@ -9,13 +9,14 @@ const JAVA_SCRIPT_CONSTANT_SYSTEM = const JavaScriptConstantSystem();
class JavaScriptBitNotOperation extends BitNotOperation {
const JavaScriptBitNotOperation();
- Constant fold(Constant constant) {
+ ConstantValue fold(ConstantValue constant) {
if (JAVA_SCRIPT_CONSTANT_SYSTEM.isInt(constant)) {
// In JavaScript we don't check for -0 and treat it as if it was zero.
if (constant.isMinusZero) constant = DART_CONSTANT_SYSTEM.createInt(0);
- IntConstant intConstant = constant;
+ IntConstantValue intConstant = constant;
// We convert the result of bit-operations to 32 bit unsigned integers.
- return JAVA_SCRIPT_CONSTANT_SYSTEM.createInt32(~intConstant.value);
+ return
+ JAVA_SCRIPT_CONSTANT_SYSTEM.createInt32(~intConstant.primitiveValue);
}
return null;
}
@@ -32,14 +33,14 @@ class JavaScriptBinaryBitOperation implements BinaryOperation {
String get name => dartBitOperation.name;
- Constant fold(Constant left, Constant right) {
+ ConstantValue fold(ConstantValue left, ConstantValue right) {
// In JavaScript we don't check for -0 and treat it as if it was zero.
if (left.isMinusZero) left = DART_CONSTANT_SYSTEM.createInt(0);
if (right.isMinusZero) right = DART_CONSTANT_SYSTEM.createInt(0);
- IntConstant result = dartBitOperation.fold(left, right);
+ IntConstantValue result = dartBitOperation.fold(left, right);
if (result != null) {
// We convert the result of bit-operations to 32 bit unsigned integers.
- return JAVA_SCRIPT_CONSTANT_SYSTEM.createInt32(result.value);
+ return JAVA_SCRIPT_CONSTANT_SYSTEM.createInt32(result.primitiveValue);
}
return result;
}
@@ -50,11 +51,11 @@ class JavaScriptBinaryBitOperation implements BinaryOperation {
class JavaScriptShiftRightOperation extends JavaScriptBinaryBitOperation {
const JavaScriptShiftRightOperation() : super(const ShiftRightOperation());
- Constant fold(Constant left, Constant right) {
+ ConstantValue fold(ConstantValue left, ConstantValue right) {
// Truncate the input value to 32 bits if necessary.
if (left.isInt) {
- IntConstant intConstant = left;
- int value = intConstant.value;
+ IntConstantValue intConstant = left;
+ int value = intConstant.primitiveValue;
int truncatedValue = value & JAVA_SCRIPT_CONSTANT_SYSTEM.BITS32;
if (value < 0) {
// Sign-extend if the input was negative. The current semantics don't
@@ -85,10 +86,10 @@ class JavaScriptNegateOperation implements UnaryOperation {
String get name => dartNegateOperation.name;
- Constant fold(Constant constant) {
+ ConstantValue fold(ConstantValue constant) {
if (constant.isInt) {
- IntConstant intConstant = constant;
- if (intConstant.value == 0) {
+ IntConstantValue intConstant = constant;
+ if (intConstant.primitiveValue == 0) {
return JAVA_SCRIPT_CONSTANT_SYSTEM.createDouble(-0.0);
}
}
@@ -103,8 +104,8 @@ class JavaScriptBinaryArithmeticOperation implements BinaryOperation {
String get name => dartArithmeticOperation.name;
- Constant fold(Constant left, Constant right) {
- Constant result = dartArithmeticOperation.fold(left, right);
+ ConstantValue fold(ConstantValue left, ConstantValue right) {
+ ConstantValue result = dartArithmeticOperation.fold(left, right);
if (result == null) return result;
return JAVA_SCRIPT_CONSTANT_SYSTEM.convertToJavaScriptConstant(result);
}
@@ -119,17 +120,17 @@ class JavaScriptIdentityOperation implements BinaryOperation {
String get name => dartIdentityOperation.name;
- BoolConstant fold(Constant left, Constant right) {
- BoolConstant result = dartIdentityOperation.fold(left, right);
- if (result == null || result.value) return result;
+ BoolConstantValue fold(ConstantValue left, ConstantValue right) {
+ BoolConstantValue result = dartIdentityOperation.fold(left, right);
+ if (result == null || result.primitiveValue) return result;
// In JavaScript -0.0 === 0 and all doubles are equal to their integer
// values. Furthermore NaN !== NaN.
if (left.isNum && right.isNum) {
- NumConstant leftNum = left;
- NumConstant rightNum = right;
- double leftDouble = leftNum.value.toDouble();
- double rightDouble = rightNum.value.toDouble();
- return new BoolConstant(leftDouble == rightDouble);
+ NumConstantValue leftNum = left;
+ NumConstantValue rightNum = right;
+ double leftDouble = leftNum.primitiveValue.toDouble();
+ double rightDouble = rightNum.primitiveValue.toDouble();
+ return new BoolConstantValue(leftDouble == rightDouble);
}
return result;
}
@@ -185,49 +186,51 @@ class JavaScriptConstantSystem extends ConstantSystem {
return doubleValue.isNaN || doubleValue.isInfinite;
}
- NumConstant convertToJavaScriptConstant(NumConstant constant) {
+ NumConstantValue convertToJavaScriptConstant(NumConstantValue constant) {
if (constant.isInt) {
- IntConstant intConstant = constant;
- int intValue = intConstant.value;
+ IntConstantValue intConstant = constant;
+ int intValue = intConstant.primitiveValue;
if (integerBecomesNanOrInfinity(intValue)) {
- return new DoubleConstant(intValue.toDouble());
+ return new DoubleConstantValue(intValue.toDouble());
}
// If the integer loses precision with JavaScript numbers, use
// the floored version JavaScript will use.
int floorValue = intValue.toDouble().floor().toInt();
if (floorValue != intValue) {
- return new IntConstant(floorValue);
+ return new IntConstantValue(floorValue);
}
} else if (constant.isDouble) {
- DoubleConstant doubleResult = constant;
- double doubleValue = doubleResult.value;
+ DoubleConstantValue doubleResult = constant;
+ double doubleValue = doubleResult.primitiveValue;
if (!doubleValue.isInfinite && !doubleValue.isNaN &&
!constant.isMinusZero) {
int intValue = doubleValue.truncate();
if (intValue == doubleValue) {
- return new IntConstant(intValue);
+ return new IntConstantValue(intValue);
}
}
}
return constant;
}
- NumConstant createInt(int i)
- => convertToJavaScriptConstant(new IntConstant(i));
- NumConstant createInt32(int i) => new IntConstant(i & BITS32);
- NumConstant createDouble(double d)
- => convertToJavaScriptConstant(new DoubleConstant(d));
- StringConstant createString(DartString string) => new StringConstant(string);
- BoolConstant createBool(bool value) => new BoolConstant(value);
- NullConstant createNull() => new NullConstant();
+ NumConstantValue createInt(int i)
+ => convertToJavaScriptConstant(new IntConstantValue(i));
+ NumConstantValue createInt32(int i) => new IntConstantValue(i & BITS32);
+ NumConstantValue createDouble(double d)
+ => convertToJavaScriptConstant(new DoubleConstantValue(d));
+ StringConstantValue createString(DartString string) {
+ return new StringConstantValue(string);
+ }
+ BoolConstantValue createBool(bool value) => new BoolConstantValue(value);
+ NullConstantValue createNull() => new NullConstantValue();
// Integer checks don't verify that the number is not -0.0.
- bool isInt(Constant constant) => constant.isInt || constant.isMinusZero;
- bool isDouble(Constant constant)
+ bool isInt(ConstantValue constant) => constant.isInt || constant.isMinusZero;
+ bool isDouble(ConstantValue constant)
=> constant.isDouble && !constant.isMinusZero;
- bool isString(Constant constant) => constant.isString;
- bool isBool(Constant constant) => constant.isBool;
- bool isNull(Constant constant) => constant.isNull;
+ bool isString(ConstantValue constant) => constant.isString;
+ bool isBool(ConstantValue constant) => constant.isBool;
+ bool isNull(ConstantValue constant) => constant.isNull;
bool isSubtype(Compiler compiler, DartType s, DartType t) {
// At runtime, an integer is both an integer and a double: the
@@ -240,18 +243,18 @@ class JavaScriptConstantSystem extends ConstantSystem {
return compiler.types.isSubtype(s, t);
}
- MapConstant createMap(Compiler compiler,
+ MapConstantValue createMap(Compiler compiler,
InterfaceType sourceType,
- List<Constant> keys,
- List<Constant> values) {
+ List<ConstantValue> keys,
+ List<ConstantValue> values) {
JavaScriptBackend backend = compiler.backend;
bool onlyStringKeys = true;
- Constant protoValue = null;
+ ConstantValue protoValue = null;
for (int i = 0; i < keys.length ; i++) {
var key = keys[i];
if (key.isString) {
- if (key.value == JavaScriptMapConstant.PROTO_PROPERTY) {
+ if (key.primitiveValue == JavaScriptMapConstant.PROTO_PROPERTY) {
protoValue = values[i];
}
} else {
@@ -270,7 +273,7 @@ class JavaScriptConstantSystem extends ConstantSystem {
List<DartType> arguments = <DartType>[sourceType.typeArguments.first];
keysType = new InterfaceType(compiler.listClass, arguments);
}
- ListConstant keysList = new ListConstant(keysType, keys);
+ ListConstantValue keysList = new ListConstantValue(keysType, keys);
String className = onlyStringKeys
? (hasProtoKey ? JavaScriptMapConstant.DART_PROTO_CLASS
: JavaScriptMapConstant.DART_STRING_CLASS)
@@ -290,7 +293,7 @@ class JavaScriptConstantSystem extends ConstantSystem {
}
}
-class JavaScriptMapConstant extends MapConstant {
+class JavaScriptMapConstant extends MapConstantValue {
/**
* The [PROTO_PROPERTY] must not be used as normal property in any JavaScript
* object. It would change the prototype chain.
@@ -309,13 +312,13 @@ class JavaScriptMapConstant extends MapConstant {
static const String PROTO_VALUE = "_protoValue";
static const String JS_DATA_NAME = "_jsData";
- final ListConstant keyList;
- final Constant protoValue;
+ final ListConstantValue keyList;
+ final ConstantValue protoValue;
final bool onlyStringKeys;
JavaScriptMapConstant(InterfaceType type,
- ListConstant keyList,
- List<Constant> values,
+ ListConstantValue keyList,
+ List<ConstantValue> values,
this.protoValue,
this.onlyStringKeys)
: this.keyList = keyList,
@@ -326,8 +329,8 @@ class JavaScriptMapConstant extends MapConstant {
return compiler.typesTask.constMapType;
}
- List<Constant> getDependencies() {
- List<Constant> result = <Constant>[];
+ List<ConstantValue> getDependencies() {
+ List<ConstantValue> result = <ConstantValue>[];
if (onlyStringKeys) {
result.add(keyList);
} else {

Powered by Google App Engine
This is Rietveld 408576698