# HG changeset patch # User jjg # Date 1294700911 28800 # Node ID e1aa25ccdabbf9da4b8010ec87599b9b0c4b6d2c # Parent d5fe2c1cecfc976db9196ddc019be291cc160be0 6396503: javac should not require assertions enabled Reviewed-by: mcimadamore diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/Main.java --- a/langtools/src/share/classes/com/sun/tools/javac/Main.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/Main.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -43,12 +43,6 @@ */ public class Main { - static { - ClassLoader loader = Main.class.getClassLoader(); - if (loader != null) - loader.setPackageAssertionStatus("com.sun.tools.javac", true); - } - /** Unsupported command line interface. * @param args The command line parameters. */ diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/code/Attribute.java --- a/langtools/src/share/classes/com/sun/tools/javac/code/Attribute.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/code/Attribute.java Mon Jan 10 15:08:31 2011 -0800 @@ -240,8 +240,7 @@ public VarSymbol value; public Enum(Type type, VarSymbol value) { super(type); - assert value != null; - this.value = value; + this.value = Assert.checkNonNull(value); } public void accept(Visitor v) { v.visitEnum(this); } public String toString() { diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/code/Scope.java --- a/langtools/src/share/classes/com/sun/tools/javac/code/Scope.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/code/Scope.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -133,7 +133,7 @@ */ private Scope(Scope next, Symbol owner, Entry[] table, ScopeCounter scopeCounter) { this.next = next; - assert emptyScope == null || owner != null; + Assert.check(emptyScope == null || owner != null); this.owner = owner; this.table = table; this.hashMask = table.length - 1; @@ -191,16 +191,16 @@ * with next. */ public Scope leave() { - assert shared == 0; + Assert.check(shared == 0); if (table != next.table) return next; while (elems != null) { int hash = getIndex(elems.sym.name); Entry e = table[hash]; - assert e == elems : elems.sym; + Assert.check(e == elems, elems.sym); table[hash] = elems.shadowed; elems = elems.sibling; } - assert next.shared > 0; + Assert.check(next.shared > 0); next.shared--; next.nelems = nelems; // System.out.println("====> leaving scope " + this.hashCode() + " owned by " + this.owner + " to " + next.hashCode()); @@ -211,12 +211,12 @@ /** Double size of hash table. */ private void dble() { - assert shared == 0; + Assert.check(shared == 0); Entry[] oldtable = table; Entry[] newtable = new Entry[oldtable.length * 2]; for (Scope s = this; s != null; s = s.next) { if (s.table == oldtable) { - assert s == this || s.shared != 0; + Assert.check(s == this || s.shared != 0); s.table = newtable; s.hashMask = newtable.length - 1; } @@ -237,7 +237,7 @@ /** Enter symbol sym in this scope. */ public void enter(Symbol sym) { - assert shared == 0; + Assert.check(shared == 0); enter(sym, this); } @@ -251,7 +251,7 @@ * arguments are only used in import scopes. */ public void enter(Symbol sym, Scope s, Scope origin) { - assert shared == 0; + Assert.check(shared == 0); if (nelems * 3 >= hashMask * 2) dble(); int hash = getIndex(sym.name); @@ -274,7 +274,7 @@ * attribute tells us that the class isn't a package member. */ public void remove(Symbol sym) { - assert shared == 0; + Assert.check(shared == 0); Entry e = lookup(sym.name); if (e.scope == null) return; @@ -314,7 +314,7 @@ /** Enter symbol sym in this scope if not already there. */ public void enterIfAbsent(Symbol sym) { - assert shared == 0; + Assert.check(shared == 0); Entry e = lookup(sym.name); while (e.scope == this && e.sym.kind != sym.kind) e = e.next(); if (e.scope != this) enter(sym); diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/code/Symbol.java --- a/langtools/src/share/classes/com/sun/tools/javac/code/Symbol.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/code/Symbol.java Mon Jan 10 15:08:31 2011 -0800 @@ -81,8 +81,7 @@ * method to make sure that the class symbol is loaded. */ public List getAnnotationMirrors() { - assert attributes_field != null; - return attributes_field; + return Assert.checkNonNull(attributes_field); } /** Fetch a particular annotation from a symbol. */ @@ -596,7 +595,7 @@ } public R accept(ElementVisitor v, P p) { - assert type.tag == TYPEVAR; // else override will be invoked + Assert.check(type.tag == TYPEVAR); // else override will be invoked return v.visitTypeParameter(this, p); } @@ -670,8 +669,7 @@ if (attributes_field.isEmpty()) attributes_field = package_info.attributes_field; } - assert attributes_field != null; - return attributes_field; + return Assert.checkNonNull(attributes_field); } /** A package "exists" if a type or package that exists has @@ -768,8 +766,7 @@ public List getAnnotationMirrors() { if (completer != null) complete(); - assert attributes_field != null; - return attributes_field; + return Assert.checkNonNull(attributes_field); } public Type erasure(Types types) { @@ -1020,7 +1017,7 @@ } public void setData(Object data) { - assert !(data instanceof Env) : this; + Assert.check(!(data instanceof Env), this); this.data = data; } @@ -1052,7 +1049,7 @@ */ public MethodSymbol(long flags, Name name, Type type, Symbol owner) { super(MTH, flags, name, type, owner); - assert owner.type.tag != TYPEVAR : owner + "." + name; + if (owner.type.tag == TYPEVAR) Assert.error(owner + "." + name); } /** Clone this symbol with new owner. diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/code/Type.java --- a/langtools/src/share/classes/com/sun/tools/javac/code/Type.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/code/Type.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -138,7 +138,7 @@ */ public Type constType(Object constValue) { final Object value = constValue; - assert tag <= BOOLEAN; + Assert.check(tag <= BOOLEAN); return new Type(tag, tsym) { @Override public Object constValue() { @@ -202,13 +202,13 @@ * The constant value of this type, converted to String */ public String stringValue() { - assert constValue() != null; + Object cv = Assert.checkNonNull(constValue()); if (tag == BOOLEAN) - return ((Integer) constValue()).intValue() == 0 ? "false" : "true"; + return ((Integer) cv).intValue() == 0 ? "false" : "true"; else if (tag == CHAR) - return String.valueOf((char) ((Integer) constValue()).intValue()); + return String.valueOf((char) ((Integer) cv).intValue()); else - return constValue().toString(); + return cv.toString(); } /** @@ -428,9 +428,8 @@ public WildcardType(Type type, BoundKind kind, TypeSymbol tsym) { super(WILDCARD, tsym); - assert(type != null); + this.type = Assert.checkNonNull(type); this.kind = kind; - this.type = type; } public WildcardType(WildcardType t, TypeVar bound) { this(t.type, t.kind, t.tsym, bound); @@ -1021,9 +1020,8 @@ Type lower, WildcardType wildcard) { super(name, owner, lower); - assert lower != null; + this.lower = Assert.checkNonNull(lower); this.bound = upper; - this.lower = lower; this.wildcard = wildcard; } diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/code/Types.java --- a/langtools/src/share/classes/com/sun/tools/javac/code/Types.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/code/Types.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1061,8 +1061,9 @@ highSub = (lowSub == null) ? null : asSub(bHigh, aHigh.tsym); } if (highSub != null) { - assert a.tsym == highSub.tsym && a.tsym == lowSub.tsym - : a.tsym + " != " + highSub.tsym + " != " + lowSub.tsym; + if (!(a.tsym == highSub.tsym && a.tsym == lowSub.tsym)) { + Assert.error(a.tsym + " != " + highSub.tsym + " != " + lowSub.tsym); + } if (!disjointTypes(aHigh.allparams(), highSub.allparams()) && !disjointTypes(aHigh.allparams(), lowSub.allparams()) && !disjointTypes(aLow.allparams(), highSub.allparams()) @@ -1703,9 +1704,9 @@ bt.supertype_field = bounds.head; bt.interfaces_field = bounds.tail; } - assert bt.supertype_field.tsym.completer != null - || !bt.supertype_field.isInterface() - : bt.supertype_field; + Assert.check(bt.supertype_field.tsym.completer != null + || !bt.supertype_field.isInterface(), + bt.supertype_field); return bt; } @@ -1834,7 +1835,7 @@ // t.interfaces_field is null after // completion, we can assume that t is not the // type of a class/interface declaration. - assert t != t.tsym.type : t.toString(); + Assert.check(t != t.tsym.type, t); List actuals = t.allparams(); List formals = t.tsym.type.allparams(); if (t.hasErasedSupertypes()) { @@ -2646,7 +2647,7 @@ act2 = act2.tail; typarams = typarams.tail; } - assert(act1.isEmpty() && act2.isEmpty() && typarams.isEmpty()); + Assert.check(act1.isEmpty() && act2.isEmpty() && typarams.isEmpty()); return new ClassType(class1.getEnclosingType(), merged.toList(), class1.tsym); } @@ -2758,7 +2759,7 @@ // calculate lub(A, B) while (ts.head.tag != CLASS && ts.head.tag != TYPEVAR) ts = ts.tail; - assert !ts.isEmpty(); + Assert.check(!ts.isEmpty()); List cl = closure(ts.head); for (Type t : ts.tail) { if (t.tag == CLASS || t.tag == TYPEVAR) @@ -3138,7 +3139,7 @@ boolean reverse = false; Type target = to; if ((to.tsym.flags() & INTERFACE) == 0) { - assert (from.tsym.flags() & INTERFACE) != 0; + Assert.check((from.tsym.flags() & INTERFACE) != 0); reverse = true; to = from; from = target; @@ -3173,12 +3174,12 @@ boolean reverse = false; Type target = to; if ((to.tsym.flags() & INTERFACE) == 0) { - assert (from.tsym.flags() & INTERFACE) != 0; + Assert.check((from.tsym.flags() & INTERFACE) != 0); reverse = true; to = from; from = target; } - assert (from.tsym.flags() & FINAL) != 0; + Assert.check((from.tsym.flags() & FINAL) != 0); Type t1 = asSuper(from, to.tsym); if (t1 == null) return false; Type t2 = to; diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java --- a/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java Mon Jan 10 15:08:31 2011 -0800 @@ -563,7 +563,7 @@ if (bound != null && bound.tsym instanceof ClassSymbol) { ClassSymbol c = (ClassSymbol)bound.tsym; if ((c.flags_field & COMPOUND) != 0) { - assert (c.flags_field & UNATTRIBUTED) != 0 : c; + Assert.check((c.flags_field & UNATTRIBUTED) != 0, c); attribClass(typaram.pos(), c); } } @@ -1434,7 +1434,7 @@ localEnv.info.varArgs = false; Type mtype = attribExpr(tree.meth, localEnv, mpt); if (localEnv.info.varArgs) - assert mtype.isErroneous() || tree.varargsElement != null; + Assert.check(mtype.isErroneous() || tree.varargsElement != null); // Compute the result type. Type restype = mtype.getReturnType(); @@ -1667,7 +1667,7 @@ typeargtypes, localEnv.info.varArgs); if (localEnv.info.varArgs) - assert tree.constructorType.isErroneous() || tree.varargsElement != null; + Assert.check(tree.constructorType.isErroneous() || tree.varargsElement != null); } if (cdef != null) { @@ -1727,7 +1727,7 @@ Symbol sym = rs.resolveConstructor( tree.pos(), localEnv, clazztype, argtypes, typeargtypes, true, tree.varargsElement != null); - assert sym.kind < AMBIGUOUS || tree.constructor.type.isErroneous(); + Assert.check(sym.kind < AMBIGUOUS || tree.constructor.type.isErroneous()); tree.constructor = sym; if (tree.constructor.kind > ERRONEOUS) { tree.constructorType = syms.errType; @@ -2961,7 +2961,7 @@ extending, implementing, List.nil()); ClassSymbol c = (ClassSymbol)a.getUpperBound().tsym; - assert (c.flags() & COMPOUND) != 0; + Assert.check((c.flags() & COMPOUND) != 0); cd.sym = c; c.sourcefile = env.toplevel.sourcefile; @@ -3093,7 +3093,7 @@ /** Finish the attribution of a class. */ private void attribClassBody(Env env, ClassSymbol c) { JCClassDecl tree = (JCClassDecl)env.tree; - assert c == tree.sym; + Assert.check(c == tree.sym); // Validate annotations chk.validateAnnotations(tree.mods.annotations, c); @@ -3134,12 +3134,9 @@ tree.type = c.type; - boolean assertsEnabled = false; - assert assertsEnabled = true; - if (assertsEnabled) { - for (List l = tree.typarams; - l.nonEmpty(); l = l.tail) - assert env.info.scope.lookup(l.head.name).scope != null; + for (List l = tree.typarams; + l.nonEmpty(); l = l.tail) { + Assert.checkNonNull(env.info.scope.lookup(l.head.name).scope); } // Check that a generic class doesn't extend Throwable diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/comp/Check.java --- a/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java Mon Jan 10 15:08:31 2011 -0800 @@ -2397,7 +2397,7 @@ */ void checkNonCyclicElements(JCClassDecl tree) { if ((tree.sym.flags_field & ANNOTATION) == 0) return; - assert (tree.sym.flags_field & LOCKED) == 0; + Assert.check((tree.sym.flags_field & LOCKED) == 0); try { tree.sym.flags_field |= LOCKED; for (JCTree def : tree.defs) { diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/comp/Flow.java --- a/langtools/src/share/classes/com/sun/tools/javac/comp/Flow.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Flow.java Mon Jan 10 15:08:31 2011 -0800 @@ -708,7 +708,7 @@ lint = lint.augment(tree.sym.attributes_field); - assert pendingExits.isEmpty(); + Assert.check(pendingExits.isEmpty()); try { boolean isInitialConstructor = @@ -746,7 +746,7 @@ PendingExit exit = exits.head; exits = exits.tail; if (exit.thrown == null) { - assert exit.tree.getTag() == JCTree.RETURN; + Assert.check(exit.tree.getTag() == JCTree.RETURN); if (isInitialConstructor) { inits = exit.inits; for (int i = firstadr; i < nextadr; i++) diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java --- a/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java Mon Jan 10 15:08:31 2011 -0800 @@ -1057,7 +1057,7 @@ } // Otherwise replace the variable by its proxy. sym = proxies.lookup(proxyName(sym.name)).sym; - assert sym != null && (sym.flags_field & FINAL) != 0; + Assert.check(sym != null && (sym.flags_field & FINAL) != 0); tree = make.at(tree.pos).Ident(sym); } JCExpression base = (tree.getTag() == JCTree.SELECT) ? ((JCFieldAccess) tree).selected : null; @@ -1208,7 +1208,7 @@ */ void makeAccessible(Symbol sym) { JCClassDecl cdef = classDef(sym.owner.enclClass()); - assert cdef != null : "class def not found: " + sym + " in " + sym.owner; + if (cdef == null) Assert.error("class def not found: " + sym + " in " + sym.owner); if (sym.name == names.init) { cdef.defs = cdef.defs.prepend( accessConstructorDef(cdef.pos, sym, accessConstrs.get(sym))); @@ -1458,7 +1458,7 @@ expr = make.Ident(var.sym).setType(resource.type); stats.add(var); } else { - assert resource instanceof JCExpression; + Assert.check(resource instanceof JCExpression); VarSymbol syntheticTwrVar = new VarSymbol(SYNTHETIC | FINAL, makeSyntheticName(names.fromString("twrVar" + @@ -1552,7 +1552,7 @@ List ots = outerThisStack; if (ots.isEmpty()) { log.error(pos, "no.encl.instance.of.type.in.scope", c); - assert false; + Assert.error(); return makeNull(); } VarSymbol ot = ots.head; @@ -1565,14 +1565,14 @@ log.error(pos, "no.encl.instance.of.type.in.scope", c); - assert false; // should have been caught in Attr + Assert.error(); // should have been caught in Attr return tree; } ot = ots.head; } while (ot.owner != otc); if (otc.owner.kind != PCK && !otc.hasOuterInstance()) { chk.earlyRefError(pos, c); - assert false; // should have been caught in Attr + Assert.error(); // should have been caught in Attr return makeNull(); } tree = access(make.at(pos).Select(tree, ot)); @@ -1610,7 +1610,7 @@ List ots = outerThisStack; if (ots.isEmpty()) { log.error(pos, "no.encl.instance.of.type.in.scope", c); - assert false; + Assert.error(); return makeNull(); } VarSymbol ot = ots.head; @@ -1623,7 +1623,7 @@ log.error(pos, "no.encl.instance.of.type.in.scope", c); - assert false; + Assert.error(); return tree; } ot = ots.head; @@ -1640,9 +1640,9 @@ JCStatement initField(int pos, Name name) { Scope.Entry e = proxies.lookup(name); Symbol rhs = e.sym; - assert rhs.owner.kind == MTH; + Assert.check(rhs.owner.kind == MTH); Symbol lhs = e.next().sym; - assert rhs.owner.owner == lhs.owner; + Assert.check(rhs.owner.owner == lhs.owner); make.at(pos); return make.Exec( @@ -1655,9 +1655,9 @@ */ JCStatement initOuterThis(int pos) { VarSymbol rhs = outerThisStack.head; - assert rhs.owner.kind == MTH; + Assert.check(rhs.owner.kind == MTH); VarSymbol lhs = outerThisStack.tail.head; - assert rhs.owner.owner == lhs.owner; + Assert.check(rhs.owner.owner == lhs.owner); make.at(pos); return make.Exec( @@ -1856,7 +1856,7 @@ // where /** Create an attributed tree of the form left.name(). */ private JCMethodInvocation makeCall(JCExpression left, Name name, List args) { - assert left.type != null; + Assert.checkNonNull(left.type); Symbol funcsym = lookupMethod(make_pos, name, left.type, TreeInfo.types(args)); return make.App(make.Select(left, funcsym), args); @@ -2399,7 +2399,7 @@ names.valueOf, tree.sym.type, List.of(syms.stringType)); - assert (valueOfSym.flags() & STATIC) != 0; + Assert.check((valueOfSym.flags() & STATIC) != 0); VarSymbol nameArgSym = valueOfSym.params.head; JCIdent nameVal = make.Ident(nameArgSym); JCStatement enum_ValueOf = @@ -3416,7 +3416,7 @@ if (expression != null) { // expression for a "default" case is null String labelExpr = (String) expression.type.constValue(); Integer mapping = caseLabelToPosition.put(labelExpr, casePosition); - assert mapping == null; + Assert.checkNull(mapping); int hashCode = labelExpr.hashCode(); Set stringSet = hashToString.get(hashCode); @@ -3426,7 +3426,7 @@ hashToString.put(hashCode, stringSet); } else { boolean added = stringSet.add(labelExpr); - assert added; + Assert.check(added); } } casePosition++; @@ -3478,7 +3478,7 @@ for(Map.Entry> entry : hashToString.entrySet()) { int hashCode = entry.getKey(); Set stringsWithHashCode = entry.getValue(); - assert stringsWithHashCode.size() >= 1; + Assert.check(stringsWithHashCode.size() >= 1); JCStatement elsepart = null; for(String caseLabel : stringsWithHashCode ) { @@ -3692,8 +3692,7 @@ cdef.type, List.nil()); - assert(ordinalSym != null); - assert(ordinalSym instanceof MethodSymbol); + Assert.check(ordinalSym instanceof MethodSymbol); JCStatement ret = make.Return(make.Ident(ordinalSymbol)); cdef.defs = cdef.defs.append(make.MethodDef((MethodSymbol)ordinalSym, @@ -3709,8 +3708,7 @@ cdef.type, List.nil()); - assert(nameSym != null); - assert(nameSym instanceof MethodSymbol); + Assert.check(nameSym instanceof MethodSymbol); JCStatement ret = make.Return(make.Ident(nameSymbol)); @@ -3761,8 +3759,7 @@ cdef.type, List.of(cdef.sym.type)); - assert(compareToSym != null); - assert(compareToSym instanceof MethodSymbol); + Assert.check(compareToSym instanceof MethodSymbol); JCMethodDecl compareToDecl = (JCMethodDecl) TreeInfo.declarationFor(compareToSym, cdef); diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java --- a/langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java Mon Jan 10 15:08:31 2011 -0800 @@ -581,8 +581,7 @@ JCVariableDecl lastParam = null; for (List l = tree.params; l.nonEmpty(); l = l.tail) { JCVariableDecl param = lastParam = l.head; - assert param.sym != null; - params.append(param.sym); + params.append(Assert.checkNonNull(param.sym)); } m.params = params.toList(); @@ -699,7 +698,7 @@ *********************************************************************/ Type attribImportType(JCTree tree, Env env) { - assert completionEnabled; + Assert.check(completionEnabled); try { // To prevent deep recursion, suppress completion of some // types. @@ -725,7 +724,7 @@ return "annotate " + annotations + " onto " + s + " in " + s.owner; } public void enterAnnotation() { - assert s.kind == PCK || s.attributes_field == null; + Assert.check(s.kind == PCK || s.attributes_field == null); JavaFileObject prev = log.useSource(localEnv.toplevel.sourcefile); try { if (s.attributes_field != null && @@ -836,7 +835,7 @@ // Suppress some (recursive) MemberEnter invocations if (!completionEnabled) { // Re-install same completer for next time around and return. - assert (sym.flags() & Flags.COMPOUND) == 0; + Assert.check((sym.flags() & Flags.COMPOUND) == 0); sym.completer = this; return; } diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java --- a/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -679,7 +679,7 @@ boolean operator) { if (sym.kind == ERR) return bestSoFar; if (!sym.isInheritedIn(site.tsym, types)) return bestSoFar; - assert sym.kind < AMBIGUOUS; + Assert.check(sym.kind < AMBIGUOUS); try { rawInstantiate(env, site, sym, argtypes, typeargtypes, allowBoxing, useVarargs, Warner.noWarnings); diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/comp/TransTypes.java --- a/langtools/src/share/classes/com/sun/tools/javac/comp/TransTypes.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/comp/TransTypes.java Mon Jan 10 15:08:31 2011 -0800 @@ -180,7 +180,7 @@ parameters = parameters.tail; } Type parameter = parameters.head; - assert varargsElement != null || args.length() == 1; + Assert.check(varargsElement != null || args.length() == 1); if (varargsElement != null) { while (args.nonEmpty()) { args.head = translate(args.head, varargsElement); @@ -594,7 +594,7 @@ if (tree.varargsElement != null) tree.varargsElement = types.erasure(tree.varargsElement); else - assert tree.args.length() == argtypes.length(); + Assert.check(tree.args.length() == argtypes.length()); tree.args = translateArgs(tree.args, argtypes, tree.varargsElement); // Insert casts of method invocation results as needed. diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/file/ZipFileIndexArchive.java --- a/langtools/src/share/classes/com/sun/tools/javac/file/ZipFileIndexArchive.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/file/ZipFileIndexArchive.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -42,6 +42,7 @@ import com.sun.tools.javac.file.JavacFileManager.Archive; import com.sun.tools.javac.file.RelativePath.RelativeDirectory; import com.sun.tools.javac.file.RelativePath.RelativeFile; +import com.sun.tools.javac.util.Assert; import com.sun.tools.javac.util.List; /** @@ -146,7 +147,7 @@ @Override public InputStream openInputStream() throws IOException { if (inputStream == null) { - assert entry != null; // see constructor + Assert.checkNonNull(entry); // see constructor inputStream = new ByteArrayInputStream(zfIndex.read(entry)); } return inputStream; diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/jvm/CRTable.java --- a/langtools/src/share/classes/com/sun/tools/javac/jvm/CRTable.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/CRTable.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -101,7 +101,7 @@ continue; SourceRange pos = positions.get(entry.tree); - assert pos != null : "CRT: tree source positions are undefined"; + Assert.checkNonNull(pos, "CRT: tree source positions are undefined"); if ((pos.startPos == Position.NOPOS) || (pos.endPos == Position.NOPOS)) continue; @@ -517,7 +517,7 @@ } public void visitTree(JCTree tree) { - assert false; + Assert.error(); } /** The start position of given tree. diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java --- a/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Mon Jan 10 15:08:31 2011 -0800 @@ -242,9 +242,9 @@ if (classes != null) return; if (definitive) { - assert packages == null || packages == syms.packages; + Assert.check(packages == null || packages == syms.packages); packages = syms.packages; - assert classes == null || classes == syms.classes; + Assert.check(classes == null || classes == syms.classes); classes = syms.classes; } else { packages = new HashMap(); @@ -530,7 +530,7 @@ int index = poolIdx[i]; int len = getChar(index + 1); int start = index + 3; - assert buf[start] == '[' || buf[start + len - 1] != ';'; + Assert.check(buf[start] == '[' || buf[start + len - 1] != ';'); // by the above assertion, the following test can be // simplified to (buf[start] == '[') return (buf[start] == '[' || buf[start + len - 1] == ';') @@ -1041,7 +1041,7 @@ readingClassAttr = true; try { ClassType ct1 = (ClassType)c.type; - assert c == currentOwner; + Assert.check(c == currentOwner); ct1.typarams_field = readTypeParams(nextChar()); ct1.supertype_field = sigToType(); ListBuffer is = new ListBuffer(); @@ -1908,9 +1908,9 @@ if (ct.interfaces_field == null) ct.interfaces_field = is.reverse(); - if (fieldCount != nextChar()) assert false; + Assert.check(fieldCount == nextChar()); for (int i = 0; i < fieldCount; i++) enterMember(c, readField()); - if (methodCount != nextChar()) assert false; + Assert.check(methodCount == nextChar()); for (int i = 0; i < methodCount; i++) enterMember(c, readMethod()); typevars = typevars.leave(); @@ -2019,7 +2019,7 @@ public ClassSymbol defineClass(Name name, Symbol owner) { ClassSymbol c = new ClassSymbol(0, name, owner); if (owner.kind == PCK) - assert classes.get(c.flatname) == null : c; + Assert.checkNull(classes.get(c.flatname), c); c.completer = this; return c; } @@ -2159,9 +2159,9 @@ if (classfile != null) { JavaFileObject previousClassFile = currentClassFile; try { - assert !filling : - "Filling " + classfile.toUri() + - " during " + previousClassFile; + if (filling) { + Assert.error("Filling " + classfile.toUri() + " during " + previousClassFile); + } currentClassFile = classfile; if (verbose) { printVerbose("loading", currentClassFile.toString()); @@ -2307,7 +2307,7 @@ public PackageSymbol enterPackage(Name fullname) { PackageSymbol p = packages.get(fullname); if (p == null) { - assert !fullname.isEmpty() : "rootPackage missing!"; + Assert.check(!fullname.isEmpty(), "rootPackage missing!"); p = new PackageSymbol( Convert.shortName(fullname), enterPackage(Convert.packagePart(fullname))); diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/jvm/ClassWriter.java --- a/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassWriter.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassWriter.java Mon Jan 10 15:08:31 2011 -0800 @@ -219,11 +219,14 @@ /** Return flags as a string, separated by " ". */ public static String flagNames(long flags) { - StringBuffer sbuf = new StringBuffer(); + StringBuilder sbuf = new StringBuilder(); int i = 0; long f = flags & StandardFlags; while (f != 0) { - if ((f & 1) != 0) sbuf.append(" " + flagName[i]); + if ((f & 1) != 0) { + sbuf.append(" "); + sbuf.append(flagName[i]); + } f = f >> 1; i++; } @@ -376,7 +379,7 @@ ? types.erasure(outer) : outer); sigbuf.appendByte('.'); - assert c.flatname.startsWith(c.owner.enclClass().flatname); + Assert.check(c.flatname.startsWith(c.owner.enclClass().flatname)); sigbuf.appendName(rawOuter ? c.flatname.subName(c.owner.enclClass().flatname.getByteLength()+1,c.flatname.getByteLength()) : c.name); @@ -416,7 +419,7 @@ /** Return signature of given type */ Name typeSig(Type type) { - assert sigbuf.length == 0; + Assert.check(sigbuf.length == 0); //- System.out.println(" ? " + type); assembleSig(type); Name n = sigbuf.toName(names); @@ -466,7 +469,7 @@ int i = 1; while (i < pool.pp) { Object value = pool.pool[i]; - assert value != null; + Assert.checkNonNull(value); if (value instanceof Pool.Method) value = ((Pool.Method)value).m; else if (value instanceof Pool.Variable) @@ -529,7 +532,7 @@ poolbuf.appendByte(CONSTANT_Class); poolbuf.appendChar(pool.put(xClassName(type))); } else { - assert false : "writePool " + value; + Assert.error("writePool " + value); } i++; } @@ -798,7 +801,7 @@ databuf.appendByte('Z'); break; case CLASS: - assert value instanceof String; + Assert.check(value instanceof String); databuf.appendByte('s'); value = names.fromString(value.toString()); // CONSTANT_Utf8 break; @@ -1015,11 +1018,11 @@ Code.LocalVar var = code.varBuffer[i]; // write variable info - assert var.start_pc >= 0; - assert var.start_pc <= code.cp; + Assert.check(var.start_pc >= 0 + && var.start_pc <= code.cp); databuf.appendChar(var.start_pc); - assert var.length >= 0; - assert (var.start_pc + var.length) <= code.cp; + Assert.check(var.length >= 0 + && (var.start_pc + var.length) <= code.cp); databuf.appendChar(var.length); VarSymbol sym = var.sym; databuf.appendChar(pool.put(sym.name)); @@ -1051,7 +1054,7 @@ databuf.appendChar(pool.put(typeSig(sym.type))); databuf.appendChar(var.reg); } - assert count == nGenericVars; + Assert.check(count == nGenericVars); endAttr(alenIdx); acount++; } @@ -1122,7 +1125,7 @@ } break; case JSR202: { - assert code.stackMapBuffer == null; + Assert.checkNull(code.stackMapBuffer); for (int i=0; i l = interfaces; !sigReq && l.nonEmpty(); l = l.tail) sigReq = l.head.allparams().length() != 0; if (sigReq) { - assert source.allowGenerics(); + Assert.check(source.allowGenerics()); int alenIdx = writeAttr(names.Signature); if (typarams.length() != 0) assembleParamsSig(typarams); assembleSig(supertype); diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/jvm/Code.java --- a/langtools/src/share/classes/com/sun/tools/javac/jvm/Code.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/Code.java Mon Jan 10 15:08:31 2011 -0800 @@ -372,7 +372,7 @@ } void postop() { - assert alive || state.stacksize == 0; + Assert.check(alive || state.stacksize == 0); } /** Emit a multinewarray instruction. @@ -583,7 +583,7 @@ case areturn: case ireturn: case freturn: - assert state.nlocks == 0; + Assert.check(state.nlocks == 0); state.pop(1); markDead(); break; @@ -604,7 +604,7 @@ break; case lreturn: case dreturn: - assert state.nlocks == 0; + Assert.check(state.nlocks == 0); state.pop(2); markDead(); break; @@ -612,7 +612,7 @@ state.push(state.stack[state.stacksize-1]); break; case return_: - assert state.nlocks == 0; + Assert.check(state.nlocks == 0); markDead(); break; case arraylength: @@ -1147,7 +1147,7 @@ int pc = curPc(); alive = true; this.state = state.dup(); - assert state.stacksize <= max_stack; + Assert.check(state.stacksize <= max_stack); if (debugCode) System.err.println("entry point " + state); pendingStackMap = needStackMap; return pc; @@ -1160,7 +1160,7 @@ int pc = curPc(); alive = true; this.state = state.dup(); - assert state.stacksize <= max_stack; + Assert.check(state.stacksize <= max_stack); this.state.push(pushed); if (debugCode) System.err.println("entry point " + state); pendingStackMap = needStackMap; @@ -1289,7 +1289,7 @@ } frame.locals = new Type[localCount]; for (int i=0, j=0; i 1) i++; } @@ -1435,8 +1435,8 @@ boolean changed = false; State newState = state; for (; chain != null; chain = chain.next) { - assert state != chain.state; - assert target > chain.pc || state.stacksize == 0; + Assert.check(state != chain.state + && (target > chain.pc || state.stacksize == 0)); if (target >= cp) { target = cp; } else if (get1(target) == goto_) { @@ -1464,9 +1464,9 @@ fatcode = true; else put2(chain.pc + 1, target - chain.pc); - assert !alive || + Assert.check(!alive || chain.state.stacksize == newState.stacksize && - chain.state.nlocks == newState.nlocks; + chain.state.nlocks == newState.nlocks); } fixedPc = true; if (cp == target) { @@ -1481,7 +1481,7 @@ } } } - assert !changed || state != newState; + Assert.check(!changed || state != newState); if (state != newState) { setDefined(newState.defined); state = newState; @@ -1492,11 +1492,11 @@ /** Resolve chain to point to current code pointer. */ public void resolve(Chain chain) { - assert + Assert.check( !alive || chain==null || state.stacksize == chain.state.stacksize && - state.nlocks == chain.state.nlocks; + state.nlocks == chain.state.nlocks); pendingJumps = mergeChains(chain, pendingJumps); } @@ -1514,9 +1514,9 @@ // recursive merge sort if (chain2 == null) return chain1; if (chain1 == null) return chain2; - assert + Assert.check( chain1.state.stacksize == chain2.state.stacksize && - chain1.state.nlocks == chain2.state.nlocks; + chain1.state.nlocks == chain2.state.nlocks); if (chain1.pc < chain2.pc) return new Chain( chain2.pc, @@ -1631,7 +1631,7 @@ void unlock(int register) { nlocks--; - assert locks[nlocks] == register; + Assert.check(locks[nlocks] == register); locks[nlocks] = -1; } @@ -1673,7 +1673,7 @@ stacksize--; Type result = stack[stacksize]; stack[stacksize] = null; - assert result != null && width(result) == 1; + Assert.check(result != null && width(result) == 1); return result; } @@ -1686,8 +1686,8 @@ stacksize -= 2; Type result = stack[stacksize]; stack[stacksize] = null; - assert stack[stacksize+1] == null; - assert result != null && width(result) == 2; + Assert.check(stack[stacksize+1] == null + && result != null && width(result) == 2); return result; } @@ -1712,8 +1712,8 @@ case ARRAY: int width = width(t); Type old = stack[stacksize-width]; - assert types.isSubtype(types.erasure(old), - types.erasure(t)); + Assert.check(types.isSubtype(types.erasure(old), + types.erasure(t))); stack[stacksize-width] = t; break; default: @@ -1739,8 +1739,8 @@ State join(State other) { defined = defined.andSet(other.defined); - assert stacksize == other.stacksize; - assert nlocks == other.nlocks; + Assert.check(stacksize == other.stacksize + && nlocks == other.nlocks); for (int i=0; i cases = tree.cases; @@ -1148,7 +1148,7 @@ if (hi < val) hi = val; nlabels++; } else { - assert defaultIndex == -1; + Assert.check(defaultIndex == -1); defaultIndex = i; } l = l.tail; @@ -1290,7 +1290,7 @@ syncEnv.info.finalize = new GenFinalizer() { void gen() { genLast(); - assert syncEnv.info.gaps.length() % 2 == 0; + Assert.check(syncEnv.info.gaps.length() % 2 == 0); syncEnv.info.gaps.append(code.curPc()); } void genLast() { @@ -1329,10 +1329,10 @@ tryEnv.info.cont, jsrState); } - assert tryEnv.info.gaps.length() % 2 == 0; + Assert.check(tryEnv.info.gaps.length() % 2 == 0); tryEnv.info.gaps.append(code.curPc()); } else { - assert tryEnv.info.gaps.length() % 2 == 0; + Assert.check(tryEnv.info.gaps.length() % 2 == 0); tryEnv.info.gaps.append(code.curPc()); genLast(); } @@ -1640,14 +1640,14 @@ public void visitBreak(JCBreak tree) { Env targetEnv = unwind(tree.target, env); - assert code.state.stacksize == 0; + Assert.check(code.state.stacksize == 0); targetEnv.info.addExit(code.branch(goto_)); endFinalizerGaps(env, targetEnv); } public void visitContinue(JCContinue tree) { Env targetEnv = unwind(tree.target, env); - assert code.state.stacksize == 0; + Assert.check(code.state.stacksize == 0); targetEnv.info.addCont(code.branch(goto_)); endFinalizerGaps(env, targetEnv); } @@ -1720,7 +1720,7 @@ public void visitNewClass(JCNewClass tree) { // Enclosing instances or anonymous classes should have been eliminated // by now. - assert tree.encl == null && tree.def == null; + Assert.check(tree.encl == null && tree.def == null); code.emitop2(new_, makeRef(tree.pos(), tree.type)); code.emitop0(dup); @@ -1902,7 +1902,7 @@ genNullCheck(tree.pos()); break; default: - assert false; + Assert.error(); } } } @@ -1977,7 +1977,7 @@ items.makeMemberItem(getStringBufferAppend(tree, t), false).invoke(); } Symbol getStringBufferAppend(JCTree tree, Type t) { - assert t.constValue() == null; + Assert.checkNull(t.constValue()); Symbol method = stringBufferAppend.get(t); if (method == null) { method = rs.resolveInternalMethod(tree.pos(), @@ -2120,7 +2120,7 @@ Symbol sym = tree.sym; if (tree.name == names._class) { - assert target.hasClassLiterals(); + Assert.check(target.hasClassLiterals()); code.emitop2(ldc2, makeRef(tree.pos(), tree.selected.type)); result = items.makeStackItem(pt); return; diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/jvm/Items.java --- a/langtools/src/share/classes/com/sun/tools/javac/jvm/Items.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/Items.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,11 +26,11 @@ package com.sun.tools.javac.jvm; import com.sun.tools.javac.code.*; - import com.sun.tools.javac.code.Symbol.*; import com.sun.tools.javac.code.Type.*; import com.sun.tools.javac.jvm.Code.*; import com.sun.tools.javac.tree.JCTree; +import com.sun.tools.javac.util.Assert; import static com.sun.tools.javac.jvm.ByteCodes.*; @@ -387,7 +387,7 @@ LocalItem(Type type, int reg) { super(Code.typecode(type)); - assert reg >= 0; + Assert.check(reg >= 0); this.type = type; this.reg = reg; } @@ -469,16 +469,16 @@ class DynamicItem extends StaticItem { DynamicItem(Symbol member) { super(member); - assert member.owner == syms.invokeDynamicType.tsym; + Assert.check(member.owner == syms.invokeDynamicType.tsym); } Item load() { - assert false; + Assert.error(); return null; } void store() { - assert false; + Assert.error(); } Item invoke() { @@ -620,7 +620,7 @@ ldc(); break; default: - assert false; + Assert.error(); } return stackItem[typecode]; } @@ -716,7 +716,7 @@ } void stash(int toscode) { - assert false; + Assert.error(); } int width() { @@ -784,7 +784,7 @@ } void stash(int toscode) { - assert false; + Assert.error(); } CondItem mkCond() { diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java --- a/langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -848,7 +848,7 @@ break; default: - assert false: "unknown compile policy"; + Assert.error("unknown compile policy"); } } catch (Abort ex) { if (devVerbose) @@ -1066,7 +1066,7 @@ classSymbols = classSymbols.prepend((ClassSymbol)sym); continue; } - assert sym.kind == Kinds.PCK; + Assert.check(sym.kind == Kinds.PCK); log.warning("proc.package.does.not.exist", nameStr); pckSymbols = pckSymbols.prepend((PackageSymbol)sym); } catch (CompletionFailure e) { @@ -1086,8 +1086,8 @@ if (c != this) annotationProcessingOccurred = c.annotationProcessingOccurred = true; // doProcessing will have handled deferred diagnostics - assert c.log.deferDiagnostics == false; - assert c.log.deferredDiagnostics.size() == 0; + Assert.check(c.log.deferDiagnostics == false + && c.log.deferredDiagnostics.size() == 0); return c; } finally { procEnvImpl.close(); @@ -1324,7 +1324,7 @@ return; List pdef = lower.translateTopLevelClass(env, env.tree, localMake); if (pdef.head != null) { - assert pdef.tail.isEmpty(); + Assert.check(pdef.tail.isEmpty()); results.add(new Pair, JCClassDecl>(env, (JCClassDecl)pdef.head)); } } diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java --- a/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -547,7 +547,7 @@ null); break; default: - assert false; + Assert.error(); } if (t == errorTree) t = F.at(pos).Erroneous(); @@ -724,7 +724,7 @@ topOpPos = posStack[top]; } } - assert top == 0; + Assert.check(top == 0); t = odStack[0]; if (t.getTag() == JCTree.PLUS) { diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/parser/Scanner.java --- a/langtools/src/share/classes/com/sun/tools/javac/parser/Scanner.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/parser/Scanner.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -445,7 +445,7 @@ */ private void scanHexFractionAndSuffix(boolean seendigit) { this.radix = 16; - assert ch == '.'; + Assert.check(ch == '.'); putChar(ch); scanChar(); skipIllegalUnderscores(); diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java --- a/langtools/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Mon Jan 10 15:08:31 2011 -0800 @@ -65,6 +65,7 @@ import com.sun.tools.javac.tree.*; import com.sun.tools.javac.tree.JCTree.*; import com.sun.tools.javac.util.Abort; +import com.sun.tools.javac.util.Assert; import com.sun.tools.javac.util.Context; import com.sun.tools.javac.util.Convert; import com.sun.tools.javac.util.FatalError; @@ -1046,17 +1047,17 @@ Context next = new Context(); Options options = Options.instance(context); - assert options != null; + Assert.checkNonNull(options); next.put(Options.optionsKey, options); PrintWriter out = context.get(Log.outKey); - assert out != null; + Assert.checkNonNull(out); next.put(Log.outKey, out); final boolean shareNames = true; if (shareNames) { Names names = Names.instance(context); - assert names != null; + Assert.checkNonNull(names); next.put(Names.namesKey, names); } @@ -1069,18 +1070,18 @@ next.put(TaskListener.class, tl); JavaFileManager jfm = context.get(JavaFileManager.class); - assert jfm != null; + Assert.checkNonNull(jfm); next.put(JavaFileManager.class, jfm); if (jfm instanceof JavacFileManager) { ((JavacFileManager)jfm).setContext(next); } Names names = Names.instance(context); - assert names != null; + Assert.checkNonNull(names); next.put(Names.namesKey, names); Keywords keywords = Keywords.instance(context); - assert(keywords != null); + Assert.checkNonNull(keywords); next.put(Keywords.keywordsKey, keywords); JavaCompiler oldCompiler = JavaCompiler.instance(context); @@ -1239,7 +1240,7 @@ for (JCTree node : unit.defs) { if (node.getTag() == JCTree.CLASSDEF) { ClassSymbol sym = ((JCClassDecl) node).sym; - assert sym != null; + Assert.checkNonNull(sym); classes = classes.prepend(sym); } } diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/tree/JCTree.java --- a/langtools/src/share/classes/com/sun/tools/javac/tree/JCTree.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/tree/JCTree.java Mon Jan 10 15:08:31 2011 -0800 @@ -2235,7 +2235,7 @@ public void visitErroneous(JCErroneous that) { visitTree(that); } public void visitLetExpr(LetExpr that) { visitTree(that); } - public void visitTree(JCTree that) { assert false; } + public void visitTree(JCTree that) { Assert.error(); } } } diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java --- a/langtools/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/tree/TreeInfo.java Mon Jan 10 15:08:31 2011 -0800 @@ -445,7 +445,7 @@ public static int finalizerPos(JCTree tree) { if (tree.getTag() == JCTree.TRY) { JCTry t = (JCTry) tree; - assert t.finalizer != null; + Assert.checkNonNull(t.finalizer); return firstStatPos(t.finalizer); } else if (tree.getTag() == JCTree.SYNCHRONIZED) { return endPos(((JCSynchronized) tree).body); diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/tree/TreeMaker.java --- a/langtools/src/share/classes/com/sun/tools/javac/tree/TreeMaker.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/tree/TreeMaker.java Mon Jan 10 15:08:31 2011 -0800 @@ -122,15 +122,15 @@ public JCCompilationUnit TopLevel(List packageAnnotations, JCExpression pid, List defs) { - assert packageAnnotations != null; + Assert.checkNonNull(packageAnnotations); for (JCTree node : defs) - assert node instanceof JCClassDecl + Assert.check(node instanceof JCClassDecl || node instanceof JCImport || node instanceof JCSkip || node instanceof JCErroneous || (node instanceof JCExpressionStatement - && ((JCExpressionStatement)node).expr instanceof JCErroneous) - : node.getClass().getSimpleName(); + && ((JCExpressionStatement)node).expr instanceof JCErroneous), + node.getClass().getSimpleName()); JCCompilationUnit tree = new JCCompilationUnit(packageAnnotations, pid, defs, null, null, null, null); tree.pos = pos; @@ -647,19 +647,14 @@ } return tp.setType(t); } -//where - private JCExpression Selectors(JCExpression base, Symbol sym, Symbol limit) { - if (sym == limit) return base; - else return Select(Selectors(base, sym.owner, limit), sym); - } /** Create a list of trees representing given list of types. */ public List Types(List ts) { - ListBuffer types = new ListBuffer(); + ListBuffer lb = new ListBuffer(); for (List l = ts; l.nonEmpty(); l = l.tail) - types.append(Type(l.head)); - return types.toList(); + lb.append(Type(l.head)); + return lb.toList(); } /** Create a variable definition from a variable symbol and an initializer diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/tree/TreeScanner.java --- a/langtools/src/share/classes/com/sun/tools/javac/tree/TreeScanner.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/tree/TreeScanner.java Mon Jan 10 15:08:31 2011 -0800 @@ -309,6 +309,6 @@ } public void visitTree(JCTree tree) { - assert false; + Assert.error(); } } diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/util/AbstractDiagnosticFormatter.java --- a/langtools/src/share/classes/com/sun/tools/javac/util/AbstractDiagnosticFormatter.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/util/AbstractDiagnosticFormatter.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -117,7 +117,7 @@ protected abstract String formatDiagnostic(JCDiagnostic d, Locale locale); public String formatPosition(JCDiagnostic d, PositionKind pk,Locale l) { - assert (d.getPosition() != Position.NOPOS); + Assert.check(d.getPosition() != Position.NOPOS); return String.valueOf(getPosition(d, pk)); } //where diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/util/Assert.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/src/share/classes/com/sun/tools/javac/util/Assert.java Mon Jan 10 15:08:31 2011 -0800 @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.tools.javac.util; + + +/** + * Simple facility for unconditional assertions. + * The methods in this class are described in terms of equivalent assert + * statements, assuming that assertions have been enabled. + * + *

This is NOT part of any supported API. + * If you write code that depends on this, you do so at your own risk. + * This code and its internal interfaces are subject to change or + * deletion without notice. + */ +public class Assert { + /** Equivalent to + * assert cond; + */ + public static void check(boolean cond) { + if (!cond) + error(); + } + + /** Equivalent to + * assert (o == null); + */ + public static void checkNull(Object o) { + if (o != null) + error(); + } + + /** Equivalent to + * assert (t != null); return t; + */ + public static T checkNonNull(T t) { + if (t == null) + error(); + return t; + } + + /** Equivalent to + * assert cond : value; + */ + public static void check(boolean cond, int value) { + if (!cond) + error(String.valueOf(value)); + } + + /** Equivalent to + * assert cond : value; + */ + public static void check(boolean cond, long value) { + if (!cond) + error(String.valueOf(value)); + } + + /** Equivalent to + * assert cond : value; + */ + public static void check(boolean cond, Object value) { + if (!cond) + error(String.valueOf(value)); + } + + /** Equivalent to + * assert cond : value; + */ + public static void check(boolean cond, String msg) { + if (!cond) + error(msg); + } + + /** Equivalent to + * assert (o == null) : value; + */ + public static void checkNull(Object o, Object value) { + if (o != null) + error(String.valueOf(value)); + } + + /** Equivalent to + * assert (o == null) : value; + */ + public static void checkNull(Object o, String msg) { + if (o != null) + error(msg); + } + + /** Equivalent to + * assert (o != null) : value; + */ + public static T checkNonNull(T t, String msg) { + if (t == null) + error(msg); + return t; + } + + /** Equivalent to + * assert false; + */ + public static void error() { + throw new AssertionError(); + } + + /** Equivalent to + * assert false : msg; + */ + public static void error(String msg) { + throw new AssertionError(msg); + } + + /** Prevent instantiation. */ + private Assert() { } +} diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/util/Bits.java --- a/langtools/src/share/classes/com/sun/tools/javac/util/Bits.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/util/Bits.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -85,7 +85,7 @@ /** Include x in this set. */ public void incl(int x) { - assert x >= 0; + Assert.check(x >= 0); sizeTo((x >>> wordshift) + 1); bits[x >>> wordshift] = bits[x >>> wordshift] | (1 << (x & wordmask)); @@ -113,7 +113,7 @@ /** Exclude x from this set. */ public void excl(int x) { - assert x >= 0; + Assert.check(x >= 0); sizeTo((x >>> wordshift) + 1); bits[x >>> wordshift] = bits[x >>> wordshift] & ~(1 << (x & wordmask)); @@ -169,7 +169,7 @@ * Delight" by Henry S. Warren Jr. (figure 5-13) */ private static int trailingZeroBits(int x) { - assert wordlen == 32; + Assert.check(wordlen == 32); if (x == 0) return 32; int n = 1; if ((x & 0xffff) == 0) { n += 16; x >>>= 16; } diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/util/Context.java --- a/langtools/src/share/classes/com/sun/tools/javac/util/Context.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/util/Context.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -145,7 +145,7 @@ o = fac.make(); if (o instanceof Factory) throw new AssertionError("T extends Context.Factory"); - assert ht.get(key) == o; + Assert.check(ht.get(key) == o); } /* The following cast can't fail unless there was diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/util/List.java --- a/langtools/src/share/classes/com/sun/tools/javac/util/List.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/util/List.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -184,7 +184,7 @@ // return this.prependList(xs.tail).prepend(xs.head); List result = this; List rev = xs.reverse(); - assert rev != xs; + Assert.check(rev != xs); // since xs.reverse() returned a new list, we can reuse the // individual List objects, instead of allocating new ones. while (rev.nonEmpty()) { diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/com/sun/tools/javac/util/UnsharedNameTable.java --- a/langtools/src/share/classes/com/sun/tools/javac/util/UnsharedNameTable.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/util/UnsharedNameTable.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -107,7 +107,7 @@ hashes[h] = firstTableEntry = element.next; } else { - assert previousNonNullTableEntry != null : "previousNonNullTableEntry cannot be null here."; + Assert.checkNonNull(previousNonNullTableEntry, "previousNonNullTableEntry cannot be null here."); previousNonNullTableEntry.next = element.next; } } @@ -133,7 +133,7 @@ hashes[h] = newEntry; } else { - assert previousNonNullTableEntry.next == null : "previousNonNullTableEntry.next must be null."; + Assert.checkNull(previousNonNullTableEntry.next, "previousNonNullTableEntry.next must be null."); previousNonNullTableEntry.next = newEntry; } diff -r d5fe2c1cecfc -r e1aa25ccdabb langtools/src/share/classes/javax/tools/ToolProvider.java --- a/langtools/src/share/classes/javax/tools/ToolProvider.java Mon Jan 10 14:57:59 2011 -0800 +++ b/langtools/src/share/classes/javax/tools/ToolProvider.java Mon Jan 10 15:08:31 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -172,7 +172,7 @@ { // try loading class directly, in case tool is on the bootclasspath try { - return enableAsserts(Class.forName(toolClassName, false, null)); + return Class.forName(toolClassName, false, null); } catch (ClassNotFoundException e) { trace(FINE, e); @@ -194,27 +194,10 @@ trace(FINE, urls[0].toString()); cl = URLClassLoader.newInstance(urls); - cl.setPackageAssertionStatus("com.sun.tools.javac", true); refToolClassLoader = new WeakReference(cl); } return Class.forName(toolClassName, false, cl); } - } - - private static Class enableAsserts(Class cls) { - try { - ClassLoader loader = cls.getClassLoader(); - if (loader != null) - loader.setPackageAssertionStatus("com.sun.tools.javac", true); - else - trace(FINE, "loader == null"); - } catch (SecurityException ex) { - trace(FINE, ex); - } - return cls; - } - - }