src/share/classes/com/sun/tools/javac/jvm/Gen.java

changeset 2810
1b59f823d630
parent 2789
36ed04994588
child 2893
ca5783d9a597
child 3000
4044eb07194d
equal deleted inserted replaced
2807:e7e42c79861e 2810:1b59f823d630
512 clinitCode.append(init); 512 clinitCode.append(init);
513 endPosTable.replaceTree(vdef, init); 513 endPosTable.replaceTree(vdef, init);
514 clinitTAs.addAll(getAndRemoveNonFieldTAs(sym)); 514 clinitTAs.addAll(getAndRemoveNonFieldTAs(sym));
515 } else { 515 } else {
516 checkStringConstant(vdef.init.pos(), sym.getConstValue()); 516 checkStringConstant(vdef.init.pos(), sym.getConstValue());
517 /* if the init contains a reference to an external class, add it to the
518 * constant's pool
519 */
520 vdef.init.accept(classReferenceVisitor);
517 } 521 }
518 } 522 }
519 break; 523 break;
520 default: 524 default:
521 Assert.error(); 525 Assert.error();
2429 if (generateIproxies && 2433 if (generateIproxies &&
2430 (c.flags() & (INTERFACE|ABSTRACT)) == ABSTRACT 2434 (c.flags() & (INTERFACE|ABSTRACT)) == ABSTRACT
2431 && !allowGenerics // no Miranda methods available with generics 2435 && !allowGenerics // no Miranda methods available with generics
2432 ) 2436 )
2433 implementInterfaceMethods(c); 2437 implementInterfaceMethods(c);
2434 cdef.defs = normalizeDefs(cdef.defs, c);
2435 c.pool = pool; 2438 c.pool = pool;
2436 pool.reset(); 2439 pool.reset();
2440 /* method normalizeDefs() can add references to external classes into the constant pool
2441 * so it should be called after pool.reset()
2442 */
2443 cdef.defs = normalizeDefs(cdef.defs, c);
2437 generateReferencesToPrunedTree(c, pool); 2444 generateReferencesToPrunedTree(c, pool);
2438 Env<GenContext> localEnv = 2445 Env<GenContext> localEnv =
2439 new Env<GenContext>(cdef, new GenContext()); 2446 new Env<GenContext>(cdef, new GenContext());
2440 localEnv.toplevel = env.toplevel; 2447 localEnv.toplevel = env.toplevel;
2441 localEnv.enclClass = cdef; 2448 localEnv.enclClass = cdef;

mercurial