Fri, 17 Oct 2014 14:24:26 +0200
8059843: Make AST serializable
Reviewed-by: hannesw, lagergren
1.1 --- a/src/jdk/nashorn/internal/codegen/CompileUnit.java Mon Oct 20 14:09:17 2014 +0200 1.2 +++ b/src/jdk/nashorn/internal/codegen/CompileUnit.java Fri Oct 17 14:24:26 2014 +0200 1.3 @@ -25,24 +25,29 @@ 1.4 1.5 package jdk.nashorn.internal.codegen; 1.6 1.7 +import java.io.Serializable; 1.8 import java.util.Set; 1.9 import java.util.TreeSet; 1.10 1.11 /** 1.12 - * Used to track split class compilation. 1.13 - */ 1.14 -public final class CompileUnit implements Comparable<CompileUnit> { 1.15 + * Used to track split class compilation. Note that instances of the class are serializable, but all fields are 1.16 + * transient, making the serialized version of the class only useful for tracking the referential topology of other 1.17 + * AST nodes referencing the same or different compile units. 1.18 + */ 1.19 +public final class CompileUnit implements Comparable<CompileUnit>, Serializable { 1.20 + private static final long serialVersionUID = 1L; 1.21 + 1.22 /** Current class name */ 1.23 - private final String className; 1.24 + private transient final String className; 1.25 1.26 /** Current class generator */ 1.27 - private ClassEmitter classEmitter; 1.28 + private transient ClassEmitter classEmitter; 1.29 1.30 - private long weight; 1.31 + private transient long weight; 1.32 1.33 - private Class<?> clazz; 1.34 + private transient Class<?> clazz; 1.35 1.36 - private boolean isUsed; 1.37 + private transient boolean isUsed; 1.38 1.39 private static int emittedUnitCount; 1.40
2.1 --- a/src/jdk/nashorn/internal/codegen/Label.java Mon Oct 20 14:09:17 2014 +0200 2.2 +++ b/src/jdk/nashorn/internal/codegen/Label.java Fri Oct 17 14:24:26 2014 +0200 2.3 @@ -24,6 +24,7 @@ 2.4 */ 2.5 package jdk.nashorn.internal.codegen; 2.6 2.7 +import java.io.Serializable; 2.8 import java.util.ArrayList; 2.9 import java.util.Arrays; 2.10 import java.util.BitSet; 2.11 @@ -39,7 +40,9 @@ 2.12 * 2.13 * see -Dnashorn.codegen.debug, --log=codegen 2.14 */ 2.15 -public final class Label { 2.16 +public final class Label implements Serializable { 2.17 + private static final long serialVersionUID = 1L; 2.18 + 2.19 //byte code generation evaluation type stack for consistency check 2.20 //and correct opcode selection. one per label as a label may be a 2.21 //join point 2.22 @@ -491,7 +494,7 @@ 2.23 private final String name; 2.24 2.25 /** Type stack at this label */ 2.26 - private Label.Stack stack; 2.27 + private transient Label.Stack stack; 2.28 2.29 /** ASM representation of this label */ 2.30 private jdk.internal.org.objectweb.asm.Label label; 2.31 @@ -500,9 +503,9 @@ 2.32 private final int id; 2.33 2.34 /** Is this label reachable (anything ever jumped to it)? */ 2.35 - private boolean reachable; 2.36 + private transient boolean reachable; 2.37 2.38 - private boolean breakTarget; 2.39 + private transient boolean breakTarget; 2.40 2.41 /** 2.42 * Constructor
3.1 --- a/src/jdk/nashorn/internal/codegen/types/ArrayType.java Mon Oct 20 14:09:17 2014 +0200 3.2 +++ b/src/jdk/nashorn/internal/codegen/types/ArrayType.java Fri Oct 17 14:24:26 2014 +0200 3.3 @@ -37,6 +37,7 @@ 3.4 * This is an array type, i.e. OBJECT_ARRAY, NUMBER_ARRAY. 3.5 */ 3.6 public class ArrayType extends ObjectType implements BytecodeArrayOps { 3.7 + private static final long serialVersionUID = 1L; 3.8 3.9 /** 3.10 * Constructor
4.1 --- a/src/jdk/nashorn/internal/codegen/types/BitwiseType.java Mon Oct 20 14:09:17 2014 +0200 4.2 +++ b/src/jdk/nashorn/internal/codegen/types/BitwiseType.java Fri Oct 17 14:24:26 2014 +0200 4.3 @@ -29,6 +29,7 @@ 4.4 * This class represents a numeric type that can be used for bit operations. 4.5 */ 4.6 public abstract class BitwiseType extends NumericType implements BytecodeBitwiseOps { 4.7 + private static final long serialVersionUID = 1L; 4.8 4.9 /** 4.10 * Constructor
5.1 --- a/src/jdk/nashorn/internal/codegen/types/BooleanType.java Mon Oct 20 14:09:17 2014 +0200 5.2 +++ b/src/jdk/nashorn/internal/codegen/types/BooleanType.java Fri Oct 17 14:24:26 2014 +0200 5.3 @@ -69,6 +69,7 @@ 5.4 * The boolean type class 5.5 */ 5.6 public final class BooleanType extends Type { 5.7 + private static final long serialVersionUID = 1L; 5.8 5.9 private static final CompilerConstants.Call VALUE_OF = staticCallNoLookup(Boolean.class, "valueOf", Boolean.class, boolean.class); 5.10 private static final CompilerConstants.Call TO_STRING = staticCallNoLookup(Boolean.class, "toString", String.class, boolean.class);
6.1 --- a/src/jdk/nashorn/internal/codegen/types/IntType.java Mon Oct 20 14:09:17 2014 +0200 6.2 +++ b/src/jdk/nashorn/internal/codegen/types/IntType.java Fri Oct 17 14:24:26 2014 +0200 6.3 @@ -60,6 +60,7 @@ 6.4 * Type class: INT 6.5 */ 6.6 class IntType extends BitwiseType { 6.7 + private static final long serialVersionUID = 1L; 6.8 6.9 private static final CompilerConstants.Call TO_STRING = staticCallNoLookup(Integer.class, "toString", String.class, int.class); 6.10 private static final CompilerConstants.Call VALUE_OF = staticCallNoLookup(Integer.class, "valueOf", Integer.class, int.class);
7.1 --- a/src/jdk/nashorn/internal/codegen/types/LongType.java Mon Oct 20 14:09:17 2014 +0200 7.2 +++ b/src/jdk/nashorn/internal/codegen/types/LongType.java Fri Oct 17 14:24:26 2014 +0200 7.3 @@ -54,6 +54,7 @@ 7.4 * Type class: LONG 7.5 */ 7.6 class LongType extends BitwiseType { 7.7 + private static final long serialVersionUID = 1L; 7.8 7.9 private static final CompilerConstants.Call VALUE_OF = staticCallNoLookup(Long.class, "valueOf", Long.class, long.class); 7.10
8.1 --- a/src/jdk/nashorn/internal/codegen/types/NumberType.java Mon Oct 20 14:09:17 2014 +0200 8.2 +++ b/src/jdk/nashorn/internal/codegen/types/NumberType.java Fri Oct 17 14:24:26 2014 +0200 8.3 @@ -46,6 +46,7 @@ 8.4 import jdk.nashorn.internal.runtime.JSType; 8.5 8.6 class NumberType extends NumericType { 8.7 + private static final long serialVersionUID = 1L; 8.8 8.9 private static final CompilerConstants.Call VALUE_OF = staticCallNoLookup(Double.class, "valueOf", Double.class, double.class); 8.10
9.1 --- a/src/jdk/nashorn/internal/codegen/types/NumericType.java Mon Oct 20 14:09:17 2014 +0200 9.2 +++ b/src/jdk/nashorn/internal/codegen/types/NumericType.java Fri Oct 17 14:24:26 2014 +0200 9.3 @@ -29,6 +29,8 @@ 9.4 * This is a numeric type, i.e. NUMBER, LONG, INT, INT32. 9.5 */ 9.6 public abstract class NumericType extends Type implements BytecodeNumericOps { 9.7 + private static final long serialVersionUID = 1L; 9.8 + 9.9 /** 9.10 * Constructor 9.11 *
10.1 --- a/src/jdk/nashorn/internal/codegen/types/ObjectType.java Mon Oct 20 14:09:17 2014 +0200 10.2 +++ b/src/jdk/nashorn/internal/codegen/types/ObjectType.java Fri Oct 17 14:24:26 2014 +0200 10.3 @@ -47,6 +47,7 @@ 10.4 * contain a class that is a more specialized object 10.5 */ 10.6 class ObjectType extends Type { 10.7 + private static final long serialVersionUID = 1L; 10.8 10.9 protected ObjectType() { 10.10 this(Object.class);
11.1 --- a/src/jdk/nashorn/internal/codegen/types/Type.java Mon Oct 20 14:09:17 2014 +0200 11.2 +++ b/src/jdk/nashorn/internal/codegen/types/Type.java Fri Oct 17 14:24:26 2014 +0200 11.3 @@ -47,9 +47,11 @@ 11.4 import static jdk.internal.org.objectweb.asm.Opcodes.T_INT; 11.5 import static jdk.internal.org.objectweb.asm.Opcodes.T_LONG; 11.6 import static jdk.nashorn.internal.codegen.CompilerConstants.staticCallNoLookup; 11.7 + 11.8 import java.io.DataInput; 11.9 import java.io.DataOutput; 11.10 import java.io.IOException; 11.11 +import java.io.Serializable; 11.12 import java.lang.invoke.CallSite; 11.13 import java.lang.invoke.MethodHandle; 11.14 import java.lang.invoke.MethodHandles; 11.15 @@ -88,19 +90,20 @@ 11.16 * INTs rather than OBJECTs 11.17 */ 11.18 11.19 -public abstract class Type implements Comparable<Type>, BytecodeOps { 11.20 +public abstract class Type implements Comparable<Type>, BytecodeOps, Serializable { 11.21 + private static final long serialVersionUID = 1L; 11.22 11.23 /** Human readable name for type */ 11.24 - private final String name; 11.25 + private transient final String name; 11.26 11.27 /** Descriptor for type */ 11.28 - private final String descriptor; 11.29 + private transient final String descriptor; 11.30 11.31 /** The "weight" of the type. Used for picking widest/least specific common type */ 11.32 - private final int weight; 11.33 + private transient final int weight; 11.34 11.35 /** How many bytecode slots does this type occupy */ 11.36 - private final int slots; 11.37 + private transient final int slots; 11.38 11.39 /** The class for this type */ 11.40 private final Class<?> clazz; 11.41 @@ -113,7 +116,7 @@ 11.42 Collections.synchronizedMap(new WeakHashMap<Class<?>, jdk.internal.org.objectweb.asm.Type>()); 11.43 11.44 /** Internal ASM type for this Type - computed once at construction */ 11.45 - private final jdk.internal.org.objectweb.asm.Type internalType; 11.46 + private transient final jdk.internal.org.objectweb.asm.Type internalType; 11.47 11.48 /** Weights are used to decide which types are "wider" than other types */ 11.49 protected static final int MIN_WEIGHT = -1; 11.50 @@ -934,6 +937,8 @@ 11.51 * This is the singleton for integer arrays 11.52 */ 11.53 public static final ArrayType INT_ARRAY = new ArrayType(int[].class) { 11.54 + private static final long serialVersionUID = 1L; 11.55 + 11.56 @Override 11.57 public void astore(final MethodVisitor method) { 11.58 method.visitInsn(IASTORE); 11.59 @@ -961,6 +966,8 @@ 11.60 * This is the singleton for long arrays 11.61 */ 11.62 public static final ArrayType LONG_ARRAY = new ArrayType(long[].class) { 11.63 + private static final long serialVersionUID = 1L; 11.64 + 11.65 @Override 11.66 public void astore(final MethodVisitor method) { 11.67 method.visitInsn(LASTORE); 11.68 @@ -988,6 +995,8 @@ 11.69 * This is the singleton for numeric arrays 11.70 */ 11.71 public static final ArrayType NUMBER_ARRAY = new ArrayType(double[].class) { 11.72 + private static final long serialVersionUID = 1L; 11.73 + 11.74 @Override 11.75 public void astore(final MethodVisitor method) { 11.76 method.visitInsn(DASTORE); 11.77 @@ -1022,6 +1031,8 @@ 11.78 11.79 /** This type, always an object type, just a toString override */ 11.80 public static final Type THIS = new ObjectType() { 11.81 + private static final long serialVersionUID = 1L; 11.82 + 11.83 @Override 11.84 public String toString() { 11.85 return "this"; 11.86 @@ -1030,6 +1041,8 @@ 11.87 11.88 /** Scope type, always an object type, just a toString override */ 11.89 public static final Type SCOPE = new ObjectType() { 11.90 + private static final long serialVersionUID = 1L; 11.91 + 11.92 @Override 11.93 public String toString() { 11.94 return "scope"; 11.95 @@ -1041,6 +1054,7 @@ 11.96 } 11.97 11.98 private abstract static class ValueLessType extends Type { 11.99 + private static final long serialVersionUID = 1L; 11.100 11.101 ValueLessType(final String name) { 11.102 super(name, Unknown.class, MIN_WEIGHT, 1); 11.103 @@ -1092,6 +1106,8 @@ 11.104 * inference. It has the minimum type width 11.105 */ 11.106 public static final Type UNKNOWN = new ValueLessType("<unknown>") { 11.107 + private static final long serialVersionUID = 1L; 11.108 + 11.109 @Override 11.110 public String getDescriptor() { 11.111 return "<unknown>"; 11.112 @@ -1108,6 +1124,7 @@ 11.113 * inference. It has the minimum type width 11.114 */ 11.115 public static final Type SLOT_2 = new ValueLessType("<slot_2>") { 11.116 + private static final long serialVersionUID = 1L; 11.117 11.118 @Override 11.119 public String getDescriptor() { 11.120 @@ -1124,4 +1141,8 @@ 11.121 cache.put(type.getTypeClass(), type); 11.122 return type; 11.123 } 11.124 + 11.125 + protected final Object readResolve() { 11.126 + return Type.typeFor(clazz); 11.127 + } 11.128 }
12.1 --- a/src/jdk/nashorn/internal/ir/AccessNode.java Mon Oct 20 14:09:17 2014 +0200 12.2 +++ b/src/jdk/nashorn/internal/ir/AccessNode.java Fri Oct 17 14:24:26 2014 +0200 12.3 @@ -34,6 +34,8 @@ 12.4 */ 12.5 @Immutable 12.6 public final class AccessNode extends BaseNode { 12.7 + private static final long serialVersionUID = 1L; 12.8 + 12.9 /** Property name. */ 12.10 private final String property; 12.11
13.1 --- a/src/jdk/nashorn/internal/ir/BaseNode.java Mon Oct 20 14:09:17 2014 +0200 13.2 +++ b/src/jdk/nashorn/internal/ir/BaseNode.java Fri Oct 17 14:24:26 2014 +0200 13.3 @@ -39,6 +39,7 @@ 13.4 */ 13.5 @Immutable 13.6 public abstract class BaseNode extends Expression implements FunctionCall, Optimistic { 13.7 + private static final long serialVersionUID = 1L; 13.8 13.9 /** Base Node. */ 13.10 protected final Expression base;
14.1 --- a/src/jdk/nashorn/internal/ir/BinaryNode.java Mon Oct 20 14:09:17 2014 +0200 14.2 +++ b/src/jdk/nashorn/internal/ir/BinaryNode.java Fri Oct 17 14:24:26 2014 +0200 14.3 @@ -43,6 +43,8 @@ 14.4 */ 14.5 @Immutable 14.6 public final class BinaryNode extends Expression implements Assignment<Expression>, Optimistic { 14.7 + private static final long serialVersionUID = 1L; 14.8 + 14.9 // Placeholder for "undecided optimistic ADD type". Unfortunately, we can't decide the type of ADD during optimistic 14.10 // type calculation as it can have local variables as its operands that will decide its ultimate type. 14.11 private static final Type OPTIMISTIC_UNDECIDED_TYPE = Type.typeFor(new Object(){/*empty*/}.getClass()); 14.12 @@ -56,8 +58,8 @@ 14.13 14.14 private final Type type; 14.15 14.16 - private Type cachedType; 14.17 - private Object cachedTypeFunction; 14.18 + private transient Type cachedType; 14.19 + private transient Object cachedTypeFunction; 14.20 14.21 @Ignore 14.22 private static final Set<TokenType> CAN_OVERFLOW =
15.1 --- a/src/jdk/nashorn/internal/ir/Block.java Mon Oct 20 14:09:17 2014 +0200 15.2 +++ b/src/jdk/nashorn/internal/ir/Block.java Fri Oct 17 14:24:26 2014 +0200 15.3 @@ -42,6 +42,8 @@ 15.4 */ 15.5 @Immutable 15.6 public class Block extends Node implements BreakableNode, Terminal, Flags<Block> { 15.7 + private static final long serialVersionUID = 1L; 15.8 + 15.9 /** List of statements */ 15.10 protected final List<Statement> statements; 15.11
16.1 --- a/src/jdk/nashorn/internal/ir/BlockStatement.java Mon Oct 20 14:09:17 2014 +0200 16.2 +++ b/src/jdk/nashorn/internal/ir/BlockStatement.java Fri Oct 17 14:24:26 2014 +0200 16.3 @@ -32,6 +32,8 @@ 16.4 * Represents a block used as a statement. 16.5 */ 16.6 public class BlockStatement extends Statement { 16.7 + private static final long serialVersionUID = 1L; 16.8 + 16.9 /** Block to execute. */ 16.10 private final Block block; 16.11
17.1 --- a/src/jdk/nashorn/internal/ir/BreakNode.java Mon Oct 20 14:09:17 2014 +0200 17.2 +++ b/src/jdk/nashorn/internal/ir/BreakNode.java Fri Oct 17 14:24:26 2014 +0200 17.3 @@ -34,6 +34,7 @@ 17.4 */ 17.5 @Immutable 17.6 public final class BreakNode extends JumpStatement { 17.7 + private static final long serialVersionUID = 1L; 17.8 17.9 /** 17.10 * Constructor
18.1 --- a/src/jdk/nashorn/internal/ir/BreakableStatement.java Mon Oct 20 14:09:17 2014 +0200 18.2 +++ b/src/jdk/nashorn/internal/ir/BreakableStatement.java Fri Oct 17 14:24:26 2014 +0200 18.3 @@ -32,6 +32,7 @@ 18.4 18.5 @Immutable 18.6 abstract class BreakableStatement extends LexicalContextStatement implements BreakableNode { 18.7 + private static final long serialVersionUID = 1L; 18.8 18.9 /** break label. */ 18.10 protected final Label breakLabel;
19.1 --- a/src/jdk/nashorn/internal/ir/CallNode.java Mon Oct 20 14:09:17 2014 +0200 19.2 +++ b/src/jdk/nashorn/internal/ir/CallNode.java Fri Oct 17 14:24:26 2014 +0200 19.3 @@ -27,6 +27,7 @@ 19.4 19.5 import static jdk.nashorn.internal.runtime.UnwarrantedOptimismException.INVALID_PROGRAM_POINT; 19.6 19.7 +import java.io.Serializable; 19.8 import java.util.Collections; 19.9 import java.util.List; 19.10 import java.util.function.Function; 19.11 @@ -40,6 +41,7 @@ 19.12 */ 19.13 @Immutable 19.14 public final class CallNode extends LexicalContextExpression implements Optimistic { 19.15 + private static final long serialVersionUID = 1L; 19.16 19.17 /** Function identifier or function body. */ 19.18 private final Expression function; 19.19 @@ -64,7 +66,8 @@ 19.20 /** 19.21 * Arguments to be passed to builtin {@code eval} function 19.22 */ 19.23 - public static class EvalArgs { 19.24 + public static class EvalArgs implements Serializable { 19.25 + private static final long serialVersionUID = 1L; 19.26 private final List<Expression> args; 19.27 19.28 /** location string for the eval call */
20.1 --- a/src/jdk/nashorn/internal/ir/CaseNode.java Mon Oct 20 14:09:17 2014 +0200 20.2 +++ b/src/jdk/nashorn/internal/ir/CaseNode.java Fri Oct 17 14:24:26 2014 +0200 20.3 @@ -37,6 +37,8 @@ 20.4 */ 20.5 @Immutable 20.6 public final class CaseNode extends Node implements JoinPredecessor, Labels, Terminal { 20.7 + private static final long serialVersionUID = 1L; 20.8 + 20.9 /** Test expression. */ 20.10 private final Expression test; 20.11
21.1 --- a/src/jdk/nashorn/internal/ir/CatchNode.java Mon Oct 20 14:09:17 2014 +0200 21.2 +++ b/src/jdk/nashorn/internal/ir/CatchNode.java Fri Oct 17 14:24:26 2014 +0200 21.3 @@ -33,6 +33,8 @@ 21.4 */ 21.5 @Immutable 21.6 public final class CatchNode extends Statement { 21.7 + private static final long serialVersionUID = 1L; 21.8 + 21.9 /** Exception identifier. */ 21.10 private final IdentNode exception; 21.11
22.1 --- a/src/jdk/nashorn/internal/ir/ContinueNode.java Mon Oct 20 14:09:17 2014 +0200 22.2 +++ b/src/jdk/nashorn/internal/ir/ContinueNode.java Fri Oct 17 14:24:26 2014 +0200 22.3 @@ -34,6 +34,8 @@ 22.4 */ 22.5 @Immutable 22.6 public class ContinueNode extends JumpStatement { 22.7 + private static final long serialVersionUID = 1L; 22.8 + 22.9 /** 22.10 * Constructor 22.11 * 22.12 @@ -80,4 +82,3 @@ 22.13 return ((LoopNode)target).getContinueLabel(); 22.14 } 22.15 } 22.16 -
23.1 --- a/src/jdk/nashorn/internal/ir/EmptyNode.java Mon Oct 20 14:09:17 2014 +0200 23.2 +++ b/src/jdk/nashorn/internal/ir/EmptyNode.java Fri Oct 17 14:24:26 2014 +0200 23.3 @@ -33,6 +33,7 @@ 23.4 */ 23.5 @Immutable 23.6 public final class EmptyNode extends Statement { 23.7 + private static final long serialVersionUID = 1L; 23.8 23.9 /** 23.10 * Constructor
24.1 --- a/src/jdk/nashorn/internal/ir/Expression.java Mon Oct 20 14:09:17 2014 +0200 24.2 +++ b/src/jdk/nashorn/internal/ir/Expression.java Fri Oct 17 14:24:26 2014 +0200 24.3 @@ -35,6 +35,8 @@ 24.4 * 24.5 */ 24.6 public abstract class Expression extends Node { 24.7 + private static final long serialVersionUID = 1L; 24.8 + 24.9 static final String OPT_IDENTIFIER = "%"; 24.10 24.11 private static final Function<Symbol, Type> UNKNOWN_LOCALS = new Function<Symbol, Type>() {
25.1 --- a/src/jdk/nashorn/internal/ir/ExpressionStatement.java Mon Oct 20 14:09:17 2014 +0200 25.2 +++ b/src/jdk/nashorn/internal/ir/ExpressionStatement.java Fri Oct 17 14:24:26 2014 +0200 25.3 @@ -35,6 +35,8 @@ 25.4 */ 25.5 @Immutable 25.6 public final class ExpressionStatement extends Statement { 25.7 + private static final long serialVersionUID = 1L; 25.8 + 25.9 /** Expression to execute. */ 25.10 private final Expression expression; 25.11
26.1 --- a/src/jdk/nashorn/internal/ir/ForNode.java Mon Oct 20 14:09:17 2014 +0200 26.2 +++ b/src/jdk/nashorn/internal/ir/ForNode.java Fri Oct 17 14:24:26 2014 +0200 26.3 @@ -33,6 +33,8 @@ 26.4 */ 26.5 @Immutable 26.6 public final class ForNode extends LoopNode { 26.7 + private static final long serialVersionUID = 1L; 26.8 + 26.9 /** Initialize expression for an ordinary for statement, or the LHS expression receiving iterated-over values in a 26.10 * for-in statement. */ 26.11 private final Expression init;
27.1 --- a/src/jdk/nashorn/internal/ir/FunctionNode.java Mon Oct 20 14:09:17 2014 +0200 27.2 +++ b/src/jdk/nashorn/internal/ir/FunctionNode.java Fri Oct 17 14:24:26 2014 +0200 27.3 @@ -57,6 +57,8 @@ 27.4 */ 27.5 @Immutable 27.6 public final class FunctionNode extends LexicalContextExpression implements Flags<FunctionNode>, CompileUnitHolder { 27.7 + private static final long serialVersionUID = 1L; 27.8 + 27.9 /** Type used for all FunctionNodes */ 27.10 public static final Type FUNCTION_TYPE = Type.typeFor(ScriptFunction.class); 27.11
28.1 --- a/src/jdk/nashorn/internal/ir/IdentNode.java Mon Oct 20 14:09:17 2014 +0200 28.2 +++ b/src/jdk/nashorn/internal/ir/IdentNode.java Fri Oct 17 14:24:26 2014 +0200 28.3 @@ -42,6 +42,8 @@ 28.4 */ 28.5 @Immutable 28.6 public final class IdentNode extends Expression implements PropertyKey, FunctionCall, Optimistic, JoinPredecessor { 28.7 + private static final long serialVersionUID = 1L; 28.8 + 28.9 private static final int PROPERTY_NAME = 1 << 0; 28.10 private static final int INITIALIZED_HERE = 1 << 1; 28.11 private static final int FUNCTION = 1 << 2;
29.1 --- a/src/jdk/nashorn/internal/ir/IfNode.java Mon Oct 20 14:09:17 2014 +0200 29.2 +++ b/src/jdk/nashorn/internal/ir/IfNode.java Fri Oct 17 14:24:26 2014 +0200 29.3 @@ -33,6 +33,8 @@ 29.4 */ 29.5 @Immutable 29.6 public final class IfNode extends Statement implements JoinPredecessor { 29.7 + private static final long serialVersionUID = 1L; 29.8 + 29.9 /** Test expression. */ 29.10 private final Expression test; 29.11
30.1 --- a/src/jdk/nashorn/internal/ir/IndexNode.java Mon Oct 20 14:09:17 2014 +0200 30.2 +++ b/src/jdk/nashorn/internal/ir/IndexNode.java Fri Oct 17 14:24:26 2014 +0200 30.3 @@ -33,6 +33,8 @@ 30.4 */ 30.5 @Immutable 30.6 public final class IndexNode extends BaseNode { 30.7 + private static final long serialVersionUID = 1L; 30.8 + 30.9 /** Property index. */ 30.10 private final Expression index; 30.11
31.1 --- a/src/jdk/nashorn/internal/ir/JoinPredecessorExpression.java Mon Oct 20 14:09:17 2014 +0200 31.2 +++ b/src/jdk/nashorn/internal/ir/JoinPredecessorExpression.java Fri Oct 17 14:24:26 2014 +0200 31.3 @@ -33,6 +33,7 @@ 31.4 * A wrapper for an expression that is in a position to be a join predecessor. 31.5 */ 31.6 public class JoinPredecessorExpression extends Expression implements JoinPredecessor { 31.7 + private static final long serialVersionUID = 1L; 31.8 31.9 private final Expression expression; 31.10 private final LocalVariableConversion conversion;
32.1 --- a/src/jdk/nashorn/internal/ir/JumpStatement.java Mon Oct 20 14:09:17 2014 +0200 32.2 +++ b/src/jdk/nashorn/internal/ir/JumpStatement.java Fri Oct 17 14:24:26 2014 +0200 32.3 @@ -31,6 +31,7 @@ 32.4 * Common base class for jump statements (e.g. {@code break} and {@code continue}). 32.5 */ 32.6 public abstract class JumpStatement extends Statement implements JoinPredecessor { 32.7 + private static final long serialVersionUID = 1L; 32.8 32.9 private final String labelName; 32.10 private final LocalVariableConversion conversion;
33.1 --- a/src/jdk/nashorn/internal/ir/LabelNode.java Mon Oct 20 14:09:17 2014 +0200 33.2 +++ b/src/jdk/nashorn/internal/ir/LabelNode.java Fri Oct 17 14:24:26 2014 +0200 33.3 @@ -35,6 +35,8 @@ 33.4 */ 33.5 @Immutable 33.6 public final class LabelNode extends LexicalContextStatement implements JoinPredecessor { 33.7 + private static final long serialVersionUID = 1L; 33.8 + 33.9 /** Label ident. */ 33.10 private final String labelName; 33.11
34.1 --- a/src/jdk/nashorn/internal/ir/LexicalContextExpression.java Mon Oct 20 14:09:17 2014 +0200 34.2 +++ b/src/jdk/nashorn/internal/ir/LexicalContextExpression.java Fri Oct 17 14:24:26 2014 +0200 34.3 @@ -28,6 +28,7 @@ 34.4 import jdk.nashorn.internal.ir.visitor.NodeVisitor; 34.5 34.6 abstract class LexicalContextExpression extends Expression implements LexicalContextNode { 34.7 + private static final long serialVersionUID = 1L; 34.8 34.9 LexicalContextExpression(final LexicalContextExpression expr) { 34.10 super(expr);
35.1 --- a/src/jdk/nashorn/internal/ir/LexicalContextStatement.java Mon Oct 20 14:09:17 2014 +0200 35.2 +++ b/src/jdk/nashorn/internal/ir/LexicalContextStatement.java Fri Oct 17 14:24:26 2014 +0200 35.3 @@ -28,6 +28,8 @@ 35.4 import jdk.nashorn.internal.ir.visitor.NodeVisitor; 35.5 35.6 abstract class LexicalContextStatement extends Statement implements LexicalContextNode { 35.7 + private static final long serialVersionUID = 1L; 35.8 + 35.9 /** 35.10 * Constructor 35.11 *
36.1 --- a/src/jdk/nashorn/internal/ir/LiteralNode.java Mon Oct 20 14:09:17 2014 +0200 36.2 +++ b/src/jdk/nashorn/internal/ir/LiteralNode.java Fri Oct 17 14:24:26 2014 +0200 36.3 @@ -25,6 +25,7 @@ 36.4 36.5 package jdk.nashorn.internal.ir; 36.6 36.7 +import java.io.Serializable; 36.8 import java.util.Arrays; 36.9 import java.util.Collections; 36.10 import java.util.List; 36.11 @@ -49,6 +50,8 @@ 36.12 */ 36.13 @Immutable 36.14 public abstract class LiteralNode<T> extends Expression implements PropertyKey { 36.15 + private static final long serialVersionUID = 1L; 36.16 + 36.17 /** Literal value */ 36.18 protected final T value; 36.19 36.20 @@ -270,6 +273,8 @@ 36.21 * @param <T> the literal type 36.22 */ 36.23 public static class PrimitiveLiteralNode<T> extends LiteralNode<T> { 36.24 + private static final long serialVersionUID = 1L; 36.25 + 36.26 private PrimitiveLiteralNode(final long token, final int finish, final T value) { 36.27 super(token, finish, value); 36.28 } 36.29 @@ -304,6 +309,7 @@ 36.30 36.31 @Immutable 36.32 private static final class BooleanLiteralNode extends PrimitiveLiteralNode<Boolean> { 36.33 + private static final long serialVersionUID = 1L; 36.34 36.35 private BooleanLiteralNode(final long token, final int finish, final boolean value) { 36.36 super(Token.recast(token, value ? TokenType.TRUE : TokenType.FALSE), finish, value); 36.37 @@ -356,6 +362,7 @@ 36.38 36.39 @Immutable 36.40 private static final class NumberLiteralNode extends PrimitiveLiteralNode<Number> { 36.41 + private static final long serialVersionUID = 1L; 36.42 36.43 private final Type type = numberGetType(value); 36.44 36.45 @@ -418,6 +425,8 @@ 36.46 } 36.47 36.48 private static class UndefinedLiteralNode extends PrimitiveLiteralNode<Undefined> { 36.49 + private static final long serialVersionUID = 1L; 36.50 + 36.51 private UndefinedLiteralNode(final long token, final int finish) { 36.52 super(Token.recast(token, TokenType.OBJECT), finish, ScriptRuntime.UNDEFINED); 36.53 } 36.54 @@ -454,6 +463,8 @@ 36.55 36.56 @Immutable 36.57 private static class StringLiteralNode extends PrimitiveLiteralNode<String> { 36.58 + private static final long serialVersionUID = 1L; 36.59 + 36.60 private StringLiteralNode(final long token, final int finish, final String value) { 36.61 super(Token.recast(token, TokenType.STRING), finish, value); 36.62 } 36.63 @@ -497,6 +508,8 @@ 36.64 36.65 @Immutable 36.66 private static class LexerTokenLiteralNode extends LiteralNode<LexerToken> { 36.67 + private static final long serialVersionUID = 1L; 36.68 + 36.69 private LexerTokenLiteralNode(final long token, final int finish, final LexerToken value) { 36.70 super(Token.recast(token, TokenType.STRING), finish, value); //TODO is string the correct token type here? 36.71 } 36.72 @@ -560,6 +573,7 @@ 36.73 } 36.74 36.75 private static final class NullLiteralNode extends PrimitiveLiteralNode<Object> { 36.76 + private static final long serialVersionUID = 1L; 36.77 36.78 private NullLiteralNode(final long token, final int finish) { 36.79 super(Token.recast(token, TokenType.OBJECT), finish, null); 36.80 @@ -590,6 +604,7 @@ 36.81 */ 36.82 @Immutable 36.83 public static final class ArrayLiteralNode extends LiteralNode<Expression[]> implements LexicalContextNode { 36.84 + private static final long serialVersionUID = 1L; 36.85 36.86 /** Array element type. */ 36.87 private final Type elementType; 36.88 @@ -607,7 +622,9 @@ 36.89 * An ArrayUnit is a range in an ArrayLiteral. ArrayLiterals can 36.90 * be split if they are too large, for bytecode generation reasons 36.91 */ 36.92 - public static final class ArrayUnit implements CompileUnitHolder { 36.93 + public static final class ArrayUnit implements CompileUnitHolder, Serializable { 36.94 + private static final long serialVersionUID = 1L; 36.95 + 36.96 /** Compile unit associated with the postsets range. */ 36.97 private final CompileUnit compileUnit; 36.98
37.1 --- a/src/jdk/nashorn/internal/ir/LoopNode.java Mon Oct 20 14:09:17 2014 +0200 37.2 +++ b/src/jdk/nashorn/internal/ir/LoopNode.java Fri Oct 17 14:24:26 2014 +0200 37.3 @@ -34,6 +34,8 @@ 37.4 * A loop node, for example a while node, do while node or for node 37.5 */ 37.6 public abstract class LoopNode extends BreakableStatement { 37.7 + private static final long serialVersionUID = 1L; 37.8 + 37.9 /** loop continue label. */ 37.10 protected final Label continueLabel; 37.11
38.1 --- a/src/jdk/nashorn/internal/ir/Node.java Mon Oct 20 14:09:17 2014 +0200 38.2 +++ b/src/jdk/nashorn/internal/ir/Node.java Fri Oct 17 14:24:26 2014 +0200 38.3 @@ -25,6 +25,7 @@ 38.4 38.5 package jdk.nashorn.internal.ir; 38.6 38.7 +import java.io.Serializable; 38.8 import java.util.ArrayList; 38.9 import java.util.List; 38.10 import jdk.nashorn.internal.ir.visitor.NodeVisitor; 38.11 @@ -34,7 +35,9 @@ 38.12 /** 38.13 * Nodes are used to compose Abstract Syntax Trees. 38.14 */ 38.15 -public abstract class Node implements Cloneable { 38.16 +public abstract class Node implements Cloneable, Serializable { 38.17 + private static final long serialVersionUID = 1L; 38.18 + 38.19 /** Start of source range. */ 38.20 protected final int start; 38.21
39.1 --- a/src/jdk/nashorn/internal/ir/ObjectNode.java Mon Oct 20 14:09:17 2014 +0200 39.2 +++ b/src/jdk/nashorn/internal/ir/ObjectNode.java Fri Oct 17 14:24:26 2014 +0200 39.3 @@ -37,6 +37,7 @@ 39.4 */ 39.5 @Immutable 39.6 public final class ObjectNode extends Expression { 39.7 + private static final long serialVersionUID = 1L; 39.8 39.9 /** Literal elements. */ 39.10 private final List<PropertyNode> elements;
40.1 --- a/src/jdk/nashorn/internal/ir/PropertyNode.java Mon Oct 20 14:09:17 2014 +0200 40.2 +++ b/src/jdk/nashorn/internal/ir/PropertyNode.java Fri Oct 17 14:24:26 2014 +0200 40.3 @@ -33,6 +33,7 @@ 40.4 */ 40.5 @Immutable 40.6 public final class PropertyNode extends Node { 40.7 + private static final long serialVersionUID = 1L; 40.8 40.9 /** Property key. */ 40.10 private final PropertyKey key;
41.1 --- a/src/jdk/nashorn/internal/ir/ReturnNode.java Mon Oct 20 14:09:17 2014 +0200 41.2 +++ b/src/jdk/nashorn/internal/ir/ReturnNode.java Fri Oct 17 14:24:26 2014 +0200 41.3 @@ -36,6 +36,8 @@ 41.4 */ 41.5 @Immutable 41.6 public class ReturnNode extends Statement { 41.7 + private static final long serialVersionUID = 1L; 41.8 + 41.9 /** Optional expression. */ 41.10 private final Expression expression; 41.11
42.1 --- a/src/jdk/nashorn/internal/ir/RuntimeNode.java Mon Oct 20 14:09:17 2014 +0200 42.2 +++ b/src/jdk/nashorn/internal/ir/RuntimeNode.java Fri Oct 17 14:24:26 2014 +0200 42.3 @@ -42,6 +42,7 @@ 42.4 */ 42.5 @Immutable 42.6 public class RuntimeNode extends Expression implements Optimistic { 42.7 + private static final long serialVersionUID = 1L; 42.8 42.9 /** 42.10 * Request enum used for meta-information about the runtime request
43.1 --- a/src/jdk/nashorn/internal/ir/SplitNode.java Mon Oct 20 14:09:17 2014 +0200 43.2 +++ b/src/jdk/nashorn/internal/ir/SplitNode.java Fri Oct 17 14:24:26 2014 +0200 43.3 @@ -40,6 +40,8 @@ 43.4 */ 43.5 @Immutable 43.6 public class SplitNode extends LexicalContextStatement implements Labels, CompileUnitHolder { 43.7 + private static final long serialVersionUID = 1L; 43.8 + 43.9 /** Split node method name. */ 43.10 private final String name; 43.11
44.1 --- a/src/jdk/nashorn/internal/ir/Statement.java Mon Oct 20 14:09:17 2014 +0200 44.2 +++ b/src/jdk/nashorn/internal/ir/Statement.java Fri Oct 17 14:24:26 2014 +0200 44.3 @@ -31,6 +31,7 @@ 44.4 * location information is the Statement 44.5 */ 44.6 public abstract class Statement extends Node implements Terminal { 44.7 + private static final long serialVersionUID = 1L; 44.8 44.9 private final int lineNumber; 44.10
45.1 --- a/src/jdk/nashorn/internal/ir/SwitchNode.java Mon Oct 20 14:09:17 2014 +0200 45.2 +++ b/src/jdk/nashorn/internal/ir/SwitchNode.java Fri Oct 17 14:24:26 2014 +0200 45.3 @@ -37,6 +37,8 @@ 45.4 */ 45.5 @Immutable 45.6 public final class SwitchNode extends BreakableStatement { 45.7 + private static final long serialVersionUID = 1L; 45.8 + 45.9 /** Switch expression. */ 45.10 private final Expression expression; 45.11
46.1 --- a/src/jdk/nashorn/internal/ir/TernaryNode.java Mon Oct 20 14:09:17 2014 +0200 46.2 +++ b/src/jdk/nashorn/internal/ir/TernaryNode.java Fri Oct 17 14:24:26 2014 +0200 46.3 @@ -37,6 +37,8 @@ 46.4 */ 46.5 @Immutable 46.6 public final class TernaryNode extends Expression { 46.7 + private static final long serialVersionUID = 1L; 46.8 + 46.9 private final Expression test; 46.10 private final JoinPredecessorExpression trueExpr; 46.11 private final JoinPredecessorExpression falseExpr;
47.1 --- a/src/jdk/nashorn/internal/ir/ThrowNode.java Mon Oct 20 14:09:17 2014 +0200 47.2 +++ b/src/jdk/nashorn/internal/ir/ThrowNode.java Fri Oct 17 14:24:26 2014 +0200 47.3 @@ -33,6 +33,8 @@ 47.4 */ 47.5 @Immutable 47.6 public final class ThrowNode extends Statement implements JoinPredecessor { 47.7 + private static final long serialVersionUID = 1L; 47.8 + 47.9 /** Exception expression. */ 47.10 private final Expression expression; 47.11
48.1 --- a/src/jdk/nashorn/internal/ir/TryNode.java Mon Oct 20 14:09:17 2014 +0200 48.2 +++ b/src/jdk/nashorn/internal/ir/TryNode.java Fri Oct 17 14:24:26 2014 +0200 48.3 @@ -36,6 +36,8 @@ 48.4 */ 48.5 @Immutable 48.6 public final class TryNode extends Statement implements JoinPredecessor { 48.7 + private static final long serialVersionUID = 1L; 48.8 + 48.9 /** Try statements. */ 48.10 private final Block body; 48.11
49.1 --- a/src/jdk/nashorn/internal/ir/UnaryNode.java Mon Oct 20 14:09:17 2014 +0200 49.2 +++ b/src/jdk/nashorn/internal/ir/UnaryNode.java Fri Oct 17 14:24:26 2014 +0200 49.3 @@ -46,6 +46,8 @@ 49.4 */ 49.5 @Immutable 49.6 public final class UnaryNode extends Expression implements Assignment<Expression>, Optimistic { 49.7 + private static final long serialVersionUID = 1L; 49.8 + 49.9 /** Right hand side argument. */ 49.10 private final Expression expression; 49.11
50.1 --- a/src/jdk/nashorn/internal/ir/VarNode.java Mon Oct 20 14:09:17 2014 +0200 50.2 +++ b/src/jdk/nashorn/internal/ir/VarNode.java Fri Oct 17 14:24:26 2014 +0200 50.3 @@ -34,6 +34,8 @@ 50.4 */ 50.5 @Immutable 50.6 public final class VarNode extends Statement implements Assignment<IdentNode> { 50.7 + private static final long serialVersionUID = 1L; 50.8 + 50.9 /** Var name. */ 50.10 private final IdentNode name; 50.11
51.1 --- a/src/jdk/nashorn/internal/ir/WhileNode.java Mon Oct 20 14:09:17 2014 +0200 51.2 +++ b/src/jdk/nashorn/internal/ir/WhileNode.java Fri Oct 17 14:24:26 2014 +0200 51.3 @@ -34,6 +34,8 @@ 51.4 */ 51.5 @Immutable 51.6 public final class WhileNode extends LoopNode { 51.7 + private static final long serialVersionUID = 1L; 51.8 + 51.9 51.10 /** is this a do while node ? */ 51.11 private final boolean isDoWhile;
52.1 --- a/src/jdk/nashorn/internal/ir/WithNode.java Mon Oct 20 14:09:17 2014 +0200 52.2 +++ b/src/jdk/nashorn/internal/ir/WithNode.java Fri Oct 17 14:24:26 2014 +0200 52.3 @@ -33,6 +33,8 @@ 52.4 */ 52.5 @Immutable 52.6 public final class WithNode extends LexicalContextStatement { 52.7 + private static final long serialVersionUID = 1L; 52.8 + 52.9 /** This expression. */ 52.10 private final Expression expression; 52.11
53.1 --- a/src/jdk/nashorn/internal/parser/Lexer.java Mon Oct 20 14:09:17 2014 +0200 53.2 +++ b/src/jdk/nashorn/internal/parser/Lexer.java Fri Oct 17 14:24:26 2014 +0200 53.3 @@ -46,6 +46,7 @@ 53.4 import static jdk.nashorn.internal.parser.TokenType.STRING; 53.5 import static jdk.nashorn.internal.parser.TokenType.XML; 53.6 53.7 +import java.io.Serializable; 53.8 import jdk.nashorn.internal.runtime.ECMAErrors; 53.9 import jdk.nashorn.internal.runtime.ErrorManager; 53.10 import jdk.nashorn.internal.runtime.JSErrorType; 53.11 @@ -1717,7 +1718,9 @@ 53.12 * Helper class for Lexer tokens, e.g XML or RegExp tokens. 53.13 * This is the abstract superclass 53.14 */ 53.15 - public static abstract class LexerToken { 53.16 + public static abstract class LexerToken implements Serializable { 53.17 + private static final long serialVersionUID = 1L; 53.18 + 53.19 private final String expression; 53.20 53.21 /** 53.22 @@ -1741,6 +1744,8 @@ 53.23 * Temporary container for regular expressions. 53.24 */ 53.25 public static class RegexToken extends LexerToken { 53.26 + private static final long serialVersionUID = 1L; 53.27 + 53.28 /** Options. */ 53.29 private final String options; 53.30 53.31 @@ -1773,6 +1778,7 @@ 53.32 * Temporary container for XML expression. 53.33 */ 53.34 public static class XMLToken extends LexerToken { 53.35 + private static final long serialVersionUID = 1L; 53.36 53.37 /** 53.38 * Constructor.