1.1 --- a/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Fri Mar 09 17:10:56 2012 +0000 1.2 +++ b/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Tue Mar 13 15:43:40 2012 -0700 1.3 @@ -44,6 +44,8 @@ 1.4 import javax.tools.DiagnosticListener; 1.5 import javax.tools.JavaFileManager; 1.6 import javax.tools.JavaFileObject; 1.7 +import javax.tools.StandardLocation; 1.8 + 1.9 import static javax.tools.StandardLocation.CLASS_OUTPUT; 1.10 1.11 import com.sun.source.util.TaskEvent; 1.12 @@ -60,6 +62,7 @@ 1.13 import com.sun.tools.javac.tree.JCTree.*; 1.14 import com.sun.tools.javac.util.*; 1.15 import com.sun.tools.javac.util.Log.WriterKind; 1.16 + 1.17 import static com.sun.tools.javac.main.Option.*; 1.18 import static com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag.*; 1.19 import static com.sun.tools.javac.util.ListBuffer.lb; 1.20 @@ -227,6 +230,10 @@ 1.21 */ 1.22 protected ClassWriter writer; 1.23 1.24 + /** The native header writer. 1.25 + */ 1.26 + protected JNIWriter jniWriter; 1.27 + 1.28 /** The module for the symbol table entry phases. 1.29 */ 1.30 protected Enter enter; 1.31 @@ -330,6 +337,7 @@ 1.32 reader = ClassReader.instance(context); 1.33 make = TreeMaker.instance(context); 1.34 writer = ClassWriter.instance(context); 1.35 + jniWriter = JNIWriter.instance(context); 1.36 enter = Enter.instance(context); 1.37 todo = Todo.instance(context); 1.38 1.39 @@ -1450,8 +1458,13 @@ 1.40 JavaFileObject file; 1.41 if (usePrintSource) 1.42 file = printSource(env, cdef); 1.43 - else 1.44 + else { 1.45 + if (fileManager.hasLocation(StandardLocation.NATIVE_HEADER_OUTPUT) 1.46 + && jniWriter.needsHeader(cdef.sym)) { 1.47 + jniWriter.write(cdef.sym); 1.48 + } 1.49 file = genCode(env, cdef); 1.50 + } 1.51 if (results != null && file != null) 1.52 results.add(file); 1.53 } catch (IOException ex) {