# HG changeset patch # User attila # Date 1413548666 -7200 # Node ID 8c51767d534d8d5ec83506352a600733241b4ee0 # Parent bf5f28dafa7c49aef52c4ca30876afd5e2e5439d 8059843: Make AST serializable Reviewed-by: hannesw, lagergren diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/codegen/CompileUnit.java --- a/src/jdk/nashorn/internal/codegen/CompileUnit.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/codegen/CompileUnit.java Fri Oct 17 14:24:26 2014 +0200 @@ -25,24 +25,29 @@ package jdk.nashorn.internal.codegen; +import java.io.Serializable; import java.util.Set; import java.util.TreeSet; /** - * Used to track split class compilation. - */ -public final class CompileUnit implements Comparable { + * Used to track split class compilation. Note that instances of the class are serializable, but all fields are + * transient, making the serialized version of the class only useful for tracking the referential topology of other + * AST nodes referencing the same or different compile units. + */ +public final class CompileUnit implements Comparable, Serializable { + private static final long serialVersionUID = 1L; + /** Current class name */ - private final String className; + private transient final String className; /** Current class generator */ - private ClassEmitter classEmitter; + private transient ClassEmitter classEmitter; - private long weight; + private transient long weight; - private Class clazz; + private transient Class clazz; - private boolean isUsed; + private transient boolean isUsed; private static int emittedUnitCount; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/codegen/Label.java --- a/src/jdk/nashorn/internal/codegen/Label.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/codegen/Label.java Fri Oct 17 14:24:26 2014 +0200 @@ -24,6 +24,7 @@ */ package jdk.nashorn.internal.codegen; +import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.BitSet; @@ -39,7 +40,9 @@ * * see -Dnashorn.codegen.debug, --log=codegen */ -public final class Label { +public final class Label implements Serializable { + private static final long serialVersionUID = 1L; + //byte code generation evaluation type stack for consistency check //and correct opcode selection. one per label as a label may be a //join point @@ -491,7 +494,7 @@ private final String name; /** Type stack at this label */ - private Label.Stack stack; + private transient Label.Stack stack; /** ASM representation of this label */ private jdk.internal.org.objectweb.asm.Label label; @@ -500,9 +503,9 @@ private final int id; /** Is this label reachable (anything ever jumped to it)? */ - private boolean reachable; + private transient boolean reachable; - private boolean breakTarget; + private transient boolean breakTarget; /** * Constructor diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/codegen/types/ArrayType.java --- a/src/jdk/nashorn/internal/codegen/types/ArrayType.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/codegen/types/ArrayType.java Fri Oct 17 14:24:26 2014 +0200 @@ -37,6 +37,7 @@ * This is an array type, i.e. OBJECT_ARRAY, NUMBER_ARRAY. */ public class ArrayType extends ObjectType implements BytecodeArrayOps { + private static final long serialVersionUID = 1L; /** * Constructor diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/codegen/types/BitwiseType.java --- a/src/jdk/nashorn/internal/codegen/types/BitwiseType.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/codegen/types/BitwiseType.java Fri Oct 17 14:24:26 2014 +0200 @@ -29,6 +29,7 @@ * This class represents a numeric type that can be used for bit operations. */ public abstract class BitwiseType extends NumericType implements BytecodeBitwiseOps { + private static final long serialVersionUID = 1L; /** * Constructor diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/codegen/types/BooleanType.java --- a/src/jdk/nashorn/internal/codegen/types/BooleanType.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/codegen/types/BooleanType.java Fri Oct 17 14:24:26 2014 +0200 @@ -69,6 +69,7 @@ * The boolean type class */ public final class BooleanType extends Type { + private static final long serialVersionUID = 1L; private static final CompilerConstants.Call VALUE_OF = staticCallNoLookup(Boolean.class, "valueOf", Boolean.class, boolean.class); private static final CompilerConstants.Call TO_STRING = staticCallNoLookup(Boolean.class, "toString", String.class, boolean.class); diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/codegen/types/IntType.java --- a/src/jdk/nashorn/internal/codegen/types/IntType.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/codegen/types/IntType.java Fri Oct 17 14:24:26 2014 +0200 @@ -60,6 +60,7 @@ * Type class: INT */ class IntType extends BitwiseType { + private static final long serialVersionUID = 1L; private static final CompilerConstants.Call TO_STRING = staticCallNoLookup(Integer.class, "toString", String.class, int.class); private static final CompilerConstants.Call VALUE_OF = staticCallNoLookup(Integer.class, "valueOf", Integer.class, int.class); diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/codegen/types/LongType.java --- a/src/jdk/nashorn/internal/codegen/types/LongType.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/codegen/types/LongType.java Fri Oct 17 14:24:26 2014 +0200 @@ -54,6 +54,7 @@ * Type class: LONG */ class LongType extends BitwiseType { + private static final long serialVersionUID = 1L; private static final CompilerConstants.Call VALUE_OF = staticCallNoLookup(Long.class, "valueOf", Long.class, long.class); diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/codegen/types/NumberType.java --- a/src/jdk/nashorn/internal/codegen/types/NumberType.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/codegen/types/NumberType.java Fri Oct 17 14:24:26 2014 +0200 @@ -46,6 +46,7 @@ import jdk.nashorn.internal.runtime.JSType; class NumberType extends NumericType { + private static final long serialVersionUID = 1L; private static final CompilerConstants.Call VALUE_OF = staticCallNoLookup(Double.class, "valueOf", Double.class, double.class); diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/codegen/types/NumericType.java --- a/src/jdk/nashorn/internal/codegen/types/NumericType.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/codegen/types/NumericType.java Fri Oct 17 14:24:26 2014 +0200 @@ -29,6 +29,8 @@ * This is a numeric type, i.e. NUMBER, LONG, INT, INT32. */ public abstract class NumericType extends Type implements BytecodeNumericOps { + private static final long serialVersionUID = 1L; + /** * Constructor * diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/codegen/types/ObjectType.java --- a/src/jdk/nashorn/internal/codegen/types/ObjectType.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/codegen/types/ObjectType.java Fri Oct 17 14:24:26 2014 +0200 @@ -47,6 +47,7 @@ * contain a class that is a more specialized object */ class ObjectType extends Type { + private static final long serialVersionUID = 1L; protected ObjectType() { this(Object.class); diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/codegen/types/Type.java --- a/src/jdk/nashorn/internal/codegen/types/Type.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/codegen/types/Type.java Fri Oct 17 14:24:26 2014 +0200 @@ -47,9 +47,11 @@ import static jdk.internal.org.objectweb.asm.Opcodes.T_INT; import static jdk.internal.org.objectweb.asm.Opcodes.T_LONG; import static jdk.nashorn.internal.codegen.CompilerConstants.staticCallNoLookup; + import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; +import java.io.Serializable; import java.lang.invoke.CallSite; import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; @@ -88,19 +90,20 @@ * INTs rather than OBJECTs */ -public abstract class Type implements Comparable, BytecodeOps { +public abstract class Type implements Comparable, BytecodeOps, Serializable { + private static final long serialVersionUID = 1L; /** Human readable name for type */ - private final String name; + private transient final String name; /** Descriptor for type */ - private final String descriptor; + private transient final String descriptor; /** The "weight" of the type. Used for picking widest/least specific common type */ - private final int weight; + private transient final int weight; /** How many bytecode slots does this type occupy */ - private final int slots; + private transient final int slots; /** The class for this type */ private final Class clazz; @@ -113,7 +116,7 @@ Collections.synchronizedMap(new WeakHashMap, jdk.internal.org.objectweb.asm.Type>()); /** Internal ASM type for this Type - computed once at construction */ - private final jdk.internal.org.objectweb.asm.Type internalType; + private transient final jdk.internal.org.objectweb.asm.Type internalType; /** Weights are used to decide which types are "wider" than other types */ protected static final int MIN_WEIGHT = -1; @@ -934,6 +937,8 @@ * This is the singleton for integer arrays */ public static final ArrayType INT_ARRAY = new ArrayType(int[].class) { + private static final long serialVersionUID = 1L; + @Override public void astore(final MethodVisitor method) { method.visitInsn(IASTORE); @@ -961,6 +966,8 @@ * This is the singleton for long arrays */ public static final ArrayType LONG_ARRAY = new ArrayType(long[].class) { + private static final long serialVersionUID = 1L; + @Override public void astore(final MethodVisitor method) { method.visitInsn(LASTORE); @@ -988,6 +995,8 @@ * This is the singleton for numeric arrays */ public static final ArrayType NUMBER_ARRAY = new ArrayType(double[].class) { + private static final long serialVersionUID = 1L; + @Override public void astore(final MethodVisitor method) { method.visitInsn(DASTORE); @@ -1022,6 +1031,8 @@ /** This type, always an object type, just a toString override */ public static final Type THIS = new ObjectType() { + private static final long serialVersionUID = 1L; + @Override public String toString() { return "this"; @@ -1030,6 +1041,8 @@ /** Scope type, always an object type, just a toString override */ public static final Type SCOPE = new ObjectType() { + private static final long serialVersionUID = 1L; + @Override public String toString() { return "scope"; @@ -1041,6 +1054,7 @@ } private abstract static class ValueLessType extends Type { + private static final long serialVersionUID = 1L; ValueLessType(final String name) { super(name, Unknown.class, MIN_WEIGHT, 1); @@ -1092,6 +1106,8 @@ * inference. It has the minimum type width */ public static final Type UNKNOWN = new ValueLessType("") { + private static final long serialVersionUID = 1L; + @Override public String getDescriptor() { return ""; @@ -1108,6 +1124,7 @@ * inference. It has the minimum type width */ public static final Type SLOT_2 = new ValueLessType("") { + private static final long serialVersionUID = 1L; @Override public String getDescriptor() { @@ -1124,4 +1141,8 @@ cache.put(type.getTypeClass(), type); return type; } + + protected final Object readResolve() { + return Type.typeFor(clazz); + } } diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/AccessNode.java --- a/src/jdk/nashorn/internal/ir/AccessNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/AccessNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -34,6 +34,8 @@ */ @Immutable public final class AccessNode extends BaseNode { + private static final long serialVersionUID = 1L; + /** Property name. */ private final String property; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/BaseNode.java --- a/src/jdk/nashorn/internal/ir/BaseNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/BaseNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -39,6 +39,7 @@ */ @Immutable public abstract class BaseNode extends Expression implements FunctionCall, Optimistic { + private static final long serialVersionUID = 1L; /** Base Node. */ protected final Expression base; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/BinaryNode.java --- a/src/jdk/nashorn/internal/ir/BinaryNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/BinaryNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -43,6 +43,8 @@ */ @Immutable public final class BinaryNode extends Expression implements Assignment, Optimistic { + private static final long serialVersionUID = 1L; + // Placeholder for "undecided optimistic ADD type". Unfortunately, we can't decide the type of ADD during optimistic // type calculation as it can have local variables as its operands that will decide its ultimate type. private static final Type OPTIMISTIC_UNDECIDED_TYPE = Type.typeFor(new Object(){/*empty*/}.getClass()); @@ -56,8 +58,8 @@ private final Type type; - private Type cachedType; - private Object cachedTypeFunction; + private transient Type cachedType; + private transient Object cachedTypeFunction; @Ignore private static final Set CAN_OVERFLOW = diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/Block.java --- a/src/jdk/nashorn/internal/ir/Block.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/Block.java Fri Oct 17 14:24:26 2014 +0200 @@ -42,6 +42,8 @@ */ @Immutable public class Block extends Node implements BreakableNode, Terminal, Flags { + private static final long serialVersionUID = 1L; + /** List of statements */ protected final List statements; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/BlockStatement.java --- a/src/jdk/nashorn/internal/ir/BlockStatement.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/BlockStatement.java Fri Oct 17 14:24:26 2014 +0200 @@ -32,6 +32,8 @@ * Represents a block used as a statement. */ public class BlockStatement extends Statement { + private static final long serialVersionUID = 1L; + /** Block to execute. */ private final Block block; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/BreakNode.java --- a/src/jdk/nashorn/internal/ir/BreakNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/BreakNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -34,6 +34,7 @@ */ @Immutable public final class BreakNode extends JumpStatement { + private static final long serialVersionUID = 1L; /** * Constructor diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/BreakableStatement.java --- a/src/jdk/nashorn/internal/ir/BreakableStatement.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/BreakableStatement.java Fri Oct 17 14:24:26 2014 +0200 @@ -32,6 +32,7 @@ @Immutable abstract class BreakableStatement extends LexicalContextStatement implements BreakableNode { + private static final long serialVersionUID = 1L; /** break label. */ protected final Label breakLabel; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/CallNode.java --- a/src/jdk/nashorn/internal/ir/CallNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/CallNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -27,6 +27,7 @@ import static jdk.nashorn.internal.runtime.UnwarrantedOptimismException.INVALID_PROGRAM_POINT; +import java.io.Serializable; import java.util.Collections; import java.util.List; import java.util.function.Function; @@ -40,6 +41,7 @@ */ @Immutable public final class CallNode extends LexicalContextExpression implements Optimistic { + private static final long serialVersionUID = 1L; /** Function identifier or function body. */ private final Expression function; @@ -64,7 +66,8 @@ /** * Arguments to be passed to builtin {@code eval} function */ - public static class EvalArgs { + public static class EvalArgs implements Serializable { + private static final long serialVersionUID = 1L; private final List args; /** location string for the eval call */ diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/CaseNode.java --- a/src/jdk/nashorn/internal/ir/CaseNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/CaseNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -37,6 +37,8 @@ */ @Immutable public final class CaseNode extends Node implements JoinPredecessor, Labels, Terminal { + private static final long serialVersionUID = 1L; + /** Test expression. */ private final Expression test; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/CatchNode.java --- a/src/jdk/nashorn/internal/ir/CatchNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/CatchNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -33,6 +33,8 @@ */ @Immutable public final class CatchNode extends Statement { + private static final long serialVersionUID = 1L; + /** Exception identifier. */ private final IdentNode exception; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/ContinueNode.java --- a/src/jdk/nashorn/internal/ir/ContinueNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/ContinueNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -34,6 +34,8 @@ */ @Immutable public class ContinueNode extends JumpStatement { + private static final long serialVersionUID = 1L; + /** * Constructor * @@ -80,4 +82,3 @@ return ((LoopNode)target).getContinueLabel(); } } - diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/EmptyNode.java --- a/src/jdk/nashorn/internal/ir/EmptyNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/EmptyNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -33,6 +33,7 @@ */ @Immutable public final class EmptyNode extends Statement { + private static final long serialVersionUID = 1L; /** * Constructor diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/Expression.java --- a/src/jdk/nashorn/internal/ir/Expression.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/Expression.java Fri Oct 17 14:24:26 2014 +0200 @@ -35,6 +35,8 @@ * */ public abstract class Expression extends Node { + private static final long serialVersionUID = 1L; + static final String OPT_IDENTIFIER = "%"; private static final Function UNKNOWN_LOCALS = new Function() { diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/ExpressionStatement.java --- a/src/jdk/nashorn/internal/ir/ExpressionStatement.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/ExpressionStatement.java Fri Oct 17 14:24:26 2014 +0200 @@ -35,6 +35,8 @@ */ @Immutable public final class ExpressionStatement extends Statement { + private static final long serialVersionUID = 1L; + /** Expression to execute. */ private final Expression expression; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/ForNode.java --- a/src/jdk/nashorn/internal/ir/ForNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/ForNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -33,6 +33,8 @@ */ @Immutable public final class ForNode extends LoopNode { + private static final long serialVersionUID = 1L; + /** Initialize expression for an ordinary for statement, or the LHS expression receiving iterated-over values in a * for-in statement. */ private final Expression init; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/FunctionNode.java --- a/src/jdk/nashorn/internal/ir/FunctionNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/FunctionNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -57,6 +57,8 @@ */ @Immutable public final class FunctionNode extends LexicalContextExpression implements Flags, CompileUnitHolder { + private static final long serialVersionUID = 1L; + /** Type used for all FunctionNodes */ public static final Type FUNCTION_TYPE = Type.typeFor(ScriptFunction.class); diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/IdentNode.java --- a/src/jdk/nashorn/internal/ir/IdentNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/IdentNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -42,6 +42,8 @@ */ @Immutable public final class IdentNode extends Expression implements PropertyKey, FunctionCall, Optimistic, JoinPredecessor { + private static final long serialVersionUID = 1L; + private static final int PROPERTY_NAME = 1 << 0; private static final int INITIALIZED_HERE = 1 << 1; private static final int FUNCTION = 1 << 2; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/IfNode.java --- a/src/jdk/nashorn/internal/ir/IfNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/IfNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -33,6 +33,8 @@ */ @Immutable public final class IfNode extends Statement implements JoinPredecessor { + private static final long serialVersionUID = 1L; + /** Test expression. */ private final Expression test; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/IndexNode.java --- a/src/jdk/nashorn/internal/ir/IndexNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/IndexNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -33,6 +33,8 @@ */ @Immutable public final class IndexNode extends BaseNode { + private static final long serialVersionUID = 1L; + /** Property index. */ private final Expression index; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/JoinPredecessorExpression.java --- a/src/jdk/nashorn/internal/ir/JoinPredecessorExpression.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/JoinPredecessorExpression.java Fri Oct 17 14:24:26 2014 +0200 @@ -33,6 +33,7 @@ * A wrapper for an expression that is in a position to be a join predecessor. */ public class JoinPredecessorExpression extends Expression implements JoinPredecessor { + private static final long serialVersionUID = 1L; private final Expression expression; private final LocalVariableConversion conversion; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/JumpStatement.java --- a/src/jdk/nashorn/internal/ir/JumpStatement.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/JumpStatement.java Fri Oct 17 14:24:26 2014 +0200 @@ -31,6 +31,7 @@ * Common base class for jump statements (e.g. {@code break} and {@code continue}). */ public abstract class JumpStatement extends Statement implements JoinPredecessor { + private static final long serialVersionUID = 1L; private final String labelName; private final LocalVariableConversion conversion; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/LabelNode.java --- a/src/jdk/nashorn/internal/ir/LabelNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/LabelNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -35,6 +35,8 @@ */ @Immutable public final class LabelNode extends LexicalContextStatement implements JoinPredecessor { + private static final long serialVersionUID = 1L; + /** Label ident. */ private final String labelName; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/LexicalContextExpression.java --- a/src/jdk/nashorn/internal/ir/LexicalContextExpression.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/LexicalContextExpression.java Fri Oct 17 14:24:26 2014 +0200 @@ -28,6 +28,7 @@ import jdk.nashorn.internal.ir.visitor.NodeVisitor; abstract class LexicalContextExpression extends Expression implements LexicalContextNode { + private static final long serialVersionUID = 1L; LexicalContextExpression(final LexicalContextExpression expr) { super(expr); diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/LexicalContextStatement.java --- a/src/jdk/nashorn/internal/ir/LexicalContextStatement.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/LexicalContextStatement.java Fri Oct 17 14:24:26 2014 +0200 @@ -28,6 +28,8 @@ import jdk.nashorn.internal.ir.visitor.NodeVisitor; abstract class LexicalContextStatement extends Statement implements LexicalContextNode { + private static final long serialVersionUID = 1L; + /** * Constructor * diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/LiteralNode.java --- a/src/jdk/nashorn/internal/ir/LiteralNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/LiteralNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -25,6 +25,7 @@ package jdk.nashorn.internal.ir; +import java.io.Serializable; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -49,6 +50,8 @@ */ @Immutable public abstract class LiteralNode extends Expression implements PropertyKey { + private static final long serialVersionUID = 1L; + /** Literal value */ protected final T value; @@ -270,6 +273,8 @@ * @param the literal type */ public static class PrimitiveLiteralNode extends LiteralNode { + private static final long serialVersionUID = 1L; + private PrimitiveLiteralNode(final long token, final int finish, final T value) { super(token, finish, value); } @@ -304,6 +309,7 @@ @Immutable private static final class BooleanLiteralNode extends PrimitiveLiteralNode { + private static final long serialVersionUID = 1L; private BooleanLiteralNode(final long token, final int finish, final boolean value) { super(Token.recast(token, value ? TokenType.TRUE : TokenType.FALSE), finish, value); @@ -356,6 +362,7 @@ @Immutable private static final class NumberLiteralNode extends PrimitiveLiteralNode { + private static final long serialVersionUID = 1L; private final Type type = numberGetType(value); @@ -418,6 +425,8 @@ } private static class UndefinedLiteralNode extends PrimitiveLiteralNode { + private static final long serialVersionUID = 1L; + private UndefinedLiteralNode(final long token, final int finish) { super(Token.recast(token, TokenType.OBJECT), finish, ScriptRuntime.UNDEFINED); } @@ -454,6 +463,8 @@ @Immutable private static class StringLiteralNode extends PrimitiveLiteralNode { + private static final long serialVersionUID = 1L; + private StringLiteralNode(final long token, final int finish, final String value) { super(Token.recast(token, TokenType.STRING), finish, value); } @@ -497,6 +508,8 @@ @Immutable private static class LexerTokenLiteralNode extends LiteralNode { + private static final long serialVersionUID = 1L; + private LexerTokenLiteralNode(final long token, final int finish, final LexerToken value) { super(Token.recast(token, TokenType.STRING), finish, value); //TODO is string the correct token type here? } @@ -560,6 +573,7 @@ } private static final class NullLiteralNode extends PrimitiveLiteralNode { + private static final long serialVersionUID = 1L; private NullLiteralNode(final long token, final int finish) { super(Token.recast(token, TokenType.OBJECT), finish, null); @@ -590,6 +604,7 @@ */ @Immutable public static final class ArrayLiteralNode extends LiteralNode implements LexicalContextNode { + private static final long serialVersionUID = 1L; /** Array element type. */ private final Type elementType; @@ -607,7 +622,9 @@ * An ArrayUnit is a range in an ArrayLiteral. ArrayLiterals can * be split if they are too large, for bytecode generation reasons */ - public static final class ArrayUnit implements CompileUnitHolder { + public static final class ArrayUnit implements CompileUnitHolder, Serializable { + private static final long serialVersionUID = 1L; + /** Compile unit associated with the postsets range. */ private final CompileUnit compileUnit; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/LoopNode.java --- a/src/jdk/nashorn/internal/ir/LoopNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/LoopNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -34,6 +34,8 @@ * A loop node, for example a while node, do while node or for node */ public abstract class LoopNode extends BreakableStatement { + private static final long serialVersionUID = 1L; + /** loop continue label. */ protected final Label continueLabel; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/Node.java --- a/src/jdk/nashorn/internal/ir/Node.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/Node.java Fri Oct 17 14:24:26 2014 +0200 @@ -25,6 +25,7 @@ package jdk.nashorn.internal.ir; +import java.io.Serializable; import java.util.ArrayList; import java.util.List; import jdk.nashorn.internal.ir.visitor.NodeVisitor; @@ -34,7 +35,9 @@ /** * Nodes are used to compose Abstract Syntax Trees. */ -public abstract class Node implements Cloneable { +public abstract class Node implements Cloneable, Serializable { + private static final long serialVersionUID = 1L; + /** Start of source range. */ protected final int start; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/ObjectNode.java --- a/src/jdk/nashorn/internal/ir/ObjectNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/ObjectNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -37,6 +37,7 @@ */ @Immutable public final class ObjectNode extends Expression { + private static final long serialVersionUID = 1L; /** Literal elements. */ private final List elements; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/PropertyNode.java --- a/src/jdk/nashorn/internal/ir/PropertyNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/PropertyNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -33,6 +33,7 @@ */ @Immutable public final class PropertyNode extends Node { + private static final long serialVersionUID = 1L; /** Property key. */ private final PropertyKey key; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/ReturnNode.java --- a/src/jdk/nashorn/internal/ir/ReturnNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/ReturnNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -36,6 +36,8 @@ */ @Immutable public class ReturnNode extends Statement { + private static final long serialVersionUID = 1L; + /** Optional expression. */ private final Expression expression; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/RuntimeNode.java --- a/src/jdk/nashorn/internal/ir/RuntimeNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/RuntimeNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -42,6 +42,7 @@ */ @Immutable public class RuntimeNode extends Expression implements Optimistic { + private static final long serialVersionUID = 1L; /** * Request enum used for meta-information about the runtime request diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/SplitNode.java --- a/src/jdk/nashorn/internal/ir/SplitNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/SplitNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -40,6 +40,8 @@ */ @Immutable public class SplitNode extends LexicalContextStatement implements Labels, CompileUnitHolder { + private static final long serialVersionUID = 1L; + /** Split node method name. */ private final String name; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/Statement.java --- a/src/jdk/nashorn/internal/ir/Statement.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/Statement.java Fri Oct 17 14:24:26 2014 +0200 @@ -31,6 +31,7 @@ * location information is the Statement */ public abstract class Statement extends Node implements Terminal { + private static final long serialVersionUID = 1L; private final int lineNumber; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/SwitchNode.java --- a/src/jdk/nashorn/internal/ir/SwitchNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/SwitchNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -37,6 +37,8 @@ */ @Immutable public final class SwitchNode extends BreakableStatement { + private static final long serialVersionUID = 1L; + /** Switch expression. */ private final Expression expression; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/TernaryNode.java --- a/src/jdk/nashorn/internal/ir/TernaryNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/TernaryNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -37,6 +37,8 @@ */ @Immutable public final class TernaryNode extends Expression { + private static final long serialVersionUID = 1L; + private final Expression test; private final JoinPredecessorExpression trueExpr; private final JoinPredecessorExpression falseExpr; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/ThrowNode.java --- a/src/jdk/nashorn/internal/ir/ThrowNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/ThrowNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -33,6 +33,8 @@ */ @Immutable public final class ThrowNode extends Statement implements JoinPredecessor { + private static final long serialVersionUID = 1L; + /** Exception expression. */ private final Expression expression; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/TryNode.java --- a/src/jdk/nashorn/internal/ir/TryNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/TryNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -36,6 +36,8 @@ */ @Immutable public final class TryNode extends Statement implements JoinPredecessor { + private static final long serialVersionUID = 1L; + /** Try statements. */ private final Block body; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/UnaryNode.java --- a/src/jdk/nashorn/internal/ir/UnaryNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/UnaryNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -46,6 +46,8 @@ */ @Immutable public final class UnaryNode extends Expression implements Assignment, Optimistic { + private static final long serialVersionUID = 1L; + /** Right hand side argument. */ private final Expression expression; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/VarNode.java --- a/src/jdk/nashorn/internal/ir/VarNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/VarNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -34,6 +34,8 @@ */ @Immutable public final class VarNode extends Statement implements Assignment { + private static final long serialVersionUID = 1L; + /** Var name. */ private final IdentNode name; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/WhileNode.java --- a/src/jdk/nashorn/internal/ir/WhileNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/WhileNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -34,6 +34,8 @@ */ @Immutable public final class WhileNode extends LoopNode { + private static final long serialVersionUID = 1L; + /** is this a do while node ? */ private final boolean isDoWhile; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/ir/WithNode.java --- a/src/jdk/nashorn/internal/ir/WithNode.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/ir/WithNode.java Fri Oct 17 14:24:26 2014 +0200 @@ -33,6 +33,8 @@ */ @Immutable public final class WithNode extends LexicalContextStatement { + private static final long serialVersionUID = 1L; + /** This expression. */ private final Expression expression; diff -r bf5f28dafa7c -r 8c51767d534d src/jdk/nashorn/internal/parser/Lexer.java --- a/src/jdk/nashorn/internal/parser/Lexer.java Mon Oct 20 14:09:17 2014 +0200 +++ b/src/jdk/nashorn/internal/parser/Lexer.java Fri Oct 17 14:24:26 2014 +0200 @@ -46,6 +46,7 @@ import static jdk.nashorn.internal.parser.TokenType.STRING; import static jdk.nashorn.internal.parser.TokenType.XML; +import java.io.Serializable; import jdk.nashorn.internal.runtime.ECMAErrors; import jdk.nashorn.internal.runtime.ErrorManager; import jdk.nashorn.internal.runtime.JSErrorType; @@ -1717,7 +1718,9 @@ * Helper class for Lexer tokens, e.g XML or RegExp tokens. * This is the abstract superclass */ - public static abstract class LexerToken { + public static abstract class LexerToken implements Serializable { + private static final long serialVersionUID = 1L; + private final String expression; /** @@ -1741,6 +1744,8 @@ * Temporary container for regular expressions. */ public static class RegexToken extends LexerToken { + private static final long serialVersionUID = 1L; + /** Options. */ private final String options; @@ -1773,6 +1778,7 @@ * Temporary container for XML expression. */ public static class XMLToken extends LexerToken { + private static final long serialVersionUID = 1L; /** * Constructor.