JS: don't use wrapper messages for string, int and double literals. This allowed to decrease binary AST size of stdlib from 2659138 bytes to 2642908 bytes
This commit is contained in:
+397
-2053
File diff suppressed because it is too large
Load Diff
@@ -47,10 +47,10 @@ message Expression {
|
||||
NullLiteral null_literal = 24;
|
||||
TrueLiteral true_literal = 25;
|
||||
FalseLiteral false_literal = 26;
|
||||
StringLiteral string_literal = 27;
|
||||
int32 string_literal = 27;
|
||||
RegExpLiteral reg_exp_literal = 28;
|
||||
IntLiteral int_literal = 29;
|
||||
DoubleLiteral double_literal = 30;
|
||||
int32 int_literal = 29;
|
||||
double double_literal = 30;
|
||||
ArrayLiteral array_literal = 31;
|
||||
ObjectLiteral object_literal = 32;
|
||||
Function function = 33;
|
||||
@@ -78,23 +78,11 @@ message TrueLiteral {
|
||||
message FalseLiteral {
|
||||
}
|
||||
|
||||
message StringLiteral {
|
||||
required int32 string_id = 1;
|
||||
}
|
||||
|
||||
message RegExpLiteral {
|
||||
required int32 pattern_string_id = 1;
|
||||
optional int32 flags_string_id = 2;
|
||||
}
|
||||
|
||||
message IntLiteral {
|
||||
required int32 value = 1;
|
||||
}
|
||||
|
||||
message DoubleLiteral {
|
||||
required double value = 1;
|
||||
}
|
||||
|
||||
message ArrayLiteral {
|
||||
repeated Expression element = 1;
|
||||
}
|
||||
|
||||
@@ -263,9 +263,9 @@ class JsAstDeserializer(private val program: JsProgram) {
|
||||
ExpressionCase.NULL_LITERAL -> JsLiteral.NULL
|
||||
ExpressionCase.TRUE_LITERAL -> JsLiteral.TRUE
|
||||
ExpressionCase.FALSE_LITERAL -> JsLiteral.FALSE
|
||||
ExpressionCase.STRING_LITERAL -> program.getStringLiteral(deserializeString(proto.stringLiteral.stringId))
|
||||
ExpressionCase.INT_LITERAL -> program.getNumberLiteral(proto.intLiteral.value)
|
||||
ExpressionCase.DOUBLE_LITERAL -> program.getNumberLiteral(proto.doubleLiteral.value)
|
||||
ExpressionCase.STRING_LITERAL -> program.getStringLiteral(deserializeString(proto.stringLiteral))
|
||||
ExpressionCase.INT_LITERAL -> program.getNumberLiteral(proto.intLiteral)
|
||||
ExpressionCase.DOUBLE_LITERAL -> program.getNumberLiteral(proto.doubleLiteral)
|
||||
ExpressionCase.SIMPLE_NAME_REFERENCE -> JsNameRef(deserializeName(proto.simpleNameReference))
|
||||
|
||||
ExpressionCase.REG_EXP_LITERAL -> {
|
||||
|
||||
+75
-1293
File diff suppressed because it is too large
Load Diff
@@ -284,9 +284,7 @@ class JsAstSerializer {
|
||||
}
|
||||
|
||||
override fun visitString(x: JsStringLiteral) {
|
||||
val stringBuilder = StringLiteral.newBuilder()
|
||||
stringBuilder.stringId = serialize(x.value)
|
||||
builder.stringLiteral = stringBuilder.build()
|
||||
builder.stringLiteral = serialize(x.value)
|
||||
}
|
||||
|
||||
override fun visitRegExp(x: JsRegExp) {
|
||||
@@ -297,15 +295,11 @@ class JsAstSerializer {
|
||||
}
|
||||
|
||||
override fun visitInt(x: JsNumberLiteral.JsIntLiteral) {
|
||||
val intBuilder = IntLiteral.newBuilder()
|
||||
intBuilder.value = x.value
|
||||
builder.intLiteral = intBuilder.build()
|
||||
builder.intLiteral = x.value
|
||||
}
|
||||
|
||||
override fun visitDouble(x: JsNumberLiteral.JsDoubleLiteral) {
|
||||
val doubleBuilder = DoubleLiteral.newBuilder()
|
||||
doubleBuilder.value = x.value
|
||||
builder.doubleLiteral = doubleBuilder.build()
|
||||
builder.doubleLiteral = x.value
|
||||
}
|
||||
|
||||
override fun visitArray(x: JsArrayLiteral) {
|
||||
|
||||
Reference in New Issue
Block a user