8191054: Remove the Native-Header Tool (javah)
Reviewed-by: darcy, mcimadamore, ksrini
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/Gen.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,383 +0,0 @@
-/*
- * Copyright (c) 2002, 2014, 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.javah;
-
-import java.io.ByteArrayOutputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
-import java.nio.file.NoSuchFileException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
-import java.util.Stack;
-
-import javax.annotation.processing.ProcessingEnvironment;
-import javax.lang.model.element.ExecutableElement;
-import javax.lang.model.element.Modifier;
-import javax.lang.model.element.TypeElement;
-import javax.lang.model.element.VariableElement;
-import javax.lang.model.util.ElementFilter;
-import javax.lang.model.util.Elements;
-import javax.lang.model.util.Types;
-import javax.tools.FileObject;
-import javax.tools.JavaFileManager;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardLocation;
-
-/**
- * An abstraction for generating support files required by native methods.
- * Subclasses are for specific native interfaces. At the time of its
- * original writing, this interface is rich enough to support JNI and the
- * old 1.0-style native method interface.
- *
- * <p><b>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.</b></p>
- *
- * @author Sucheta Dambalkar(Revised)
- */
-public abstract class Gen {
- protected String lineSep = System.getProperty("line.separator");
-
- protected ProcessingEnvironment processingEnvironment;
- protected Types types;
- protected Elements elems;
- protected Mangle mangler;
- protected Util util;
-
- protected Gen(Util util) {
- this.util = util;
- }
-
- /*
- * List of classes for which we must generate output.
- */
- protected Set<TypeElement> classes;
- static private final boolean isWindows =
- System.getProperty("os.name").startsWith("Windows");
-
-
- /**
- * Override this abstract method, generating content for the named
- * class into the outputstream.
- */
- protected abstract void write(OutputStream o, TypeElement clazz) throws Util.Exit;
-
- /**
- * Override this method to provide a list of #include statements
- * required by the native interface.
- */
- protected abstract String getIncludes();
-
- /*
- * Output location.
- */
- protected JavaFileManager fileManager;
- protected JavaFileObject outFile;
-
- public void setFileManager(JavaFileManager fm) {
- fileManager = fm;
- }
-
- public void setOutFile(JavaFileObject outFile) {
- this.outFile = outFile;
- }
-
-
- public void setClasses(Set<TypeElement> classes) {
- this.classes = classes;
- }
-
- void setProcessingEnvironment(ProcessingEnvironment pEnv) {
- processingEnvironment = pEnv;
- elems = pEnv.getElementUtils();
- types = pEnv.getTypeUtils();
- mangler = new Mangle(elems, types);
- }
-
- /*
- * Smartness with generated files.
- */
- protected boolean force = false;
-
- public void setForce(boolean state) {
- force = state;
- }
-
- /**
- * We explicitly need to write ASCII files because that is what C
- * compilers understand.
- */
- protected PrintWriter wrapWriter(OutputStream o) throws Util.Exit {
- try {
- return new PrintWriter(new OutputStreamWriter(o, "ISO8859_1"), true);
- } catch (UnsupportedEncodingException use) {
- util.bug("encoding.iso8859_1.not.found");
- return null; /* dead code */
- }
- }
-
- /**
- * After initializing state of an instance, use this method to start
- * processing.
- *
- * Buffer size chosen as an approximation from a single sampling of:
- * expr `du -sk` / `ls *.h | wc -l`
- */
- public void run() throws IOException, ClassNotFoundException, Util.Exit {
- int i = 0;
- if (outFile != null) {
- /* Everything goes to one big file... */
- ByteArrayOutputStream bout = new ByteArrayOutputStream(8192);
- writeFileTop(bout); /* only once */
-
- for (TypeElement t: classes) {
- write(bout, t);
- }
-
- writeIfChanged(bout.toByteArray(), outFile);
- } else {
- /* Each class goes to its own file... */
- for (TypeElement t: classes) {
- ByteArrayOutputStream bout = new ByteArrayOutputStream(8192);
- writeFileTop(bout);
- write(bout, t);
- writeIfChanged(bout.toByteArray(), getFileObject(t.getQualifiedName()));
- }
- }
- }
-
- /*
- * Write the contents of byte[] b to a file named file. Writing
- * is done if either the file doesn't exist or if the contents are
- * different.
- */
- private void writeIfChanged(byte[] b, FileObject file) throws IOException {
- boolean mustWrite = false;
- String event = "[No need to update file ";
-
- if (force) {
- mustWrite = true;
- event = "[Forcefully writing file ";
- } else {
- InputStream in;
- byte[] a;
- try {
- // regrettably, there's no API to get the length in bytes
- // for a FileObject, so we can't short-circuit reading the
- // file here
- in = file.openInputStream();
- a = readBytes(in);
- if (!Arrays.equals(a, b)) {
- mustWrite = true;
- event = "[Overwriting file ";
-
- }
- } catch (FileNotFoundException | NoSuchFileException e) {
- mustWrite = true;
- event = "[Creating file ";
- }
- }
-
- if (util.verbose)
- util.log(event + file + "]");
-
- if (mustWrite) {
- OutputStream out = file.openOutputStream();
- out.write(b); /* No buffering, just one big write! */
- out.close();
- }
- }
-
- protected byte[] readBytes(InputStream in) throws IOException {
- try {
- byte[] array = new byte[in.available() + 1];
- int offset = 0;
- int n;
- while ((n = in.read(array, offset, array.length - offset)) != -1) {
- offset += n;
- if (offset == array.length)
- array = Arrays.copyOf(array, array.length * 2);
- }
-
- return Arrays.copyOf(array, offset);
- } finally {
- in.close();
- }
- }
-
- protected String defineForStatic(TypeElement c, VariableElement f)
- throws Util.Exit {
- CharSequence cnamedoc = c.getQualifiedName();
- CharSequence fnamedoc = f.getSimpleName();
-
- String cname = mangler.mangle(cnamedoc, Mangle.Type.CLASS);
- String fname = mangler.mangle(fnamedoc, Mangle.Type.FIELDSTUB);
-
- if (!f.getModifiers().contains(Modifier.STATIC))
- util.bug("tried.to.define.non.static");
-
- if (f.getModifiers().contains(Modifier.FINAL)) {
- Object value = null;
-
- value = f.getConstantValue();
-
- if (value != null) { /* so it is a ConstantExpression */
- String constString = null;
- if ((value instanceof Integer)
- || (value instanceof Byte)
- || (value instanceof Short)) {
- /* covers byte, short, int */
- constString = value.toString() + "L";
- } else if (value instanceof Boolean) {
- constString = ((Boolean) value) ? "1L" : "0L";
- } else if (value instanceof Character) {
- Character ch = (Character) value;
- constString = String.valueOf(((int) ch) & 0xffff) + "L";
- } else if (value instanceof Long) {
- // Visual C++ supports the i64 suffix, not LL.
- if (isWindows)
- constString = value.toString() + "i64";
- else
- constString = value.toString() + "LL";
- } else if (value instanceof Float) {
- /* bug for bug */
- float fv = ((Float)value).floatValue();
- if (Float.isInfinite(fv))
- constString = ((fv < 0) ? "-" : "") + "Inff";
- else
- constString = value.toString() + "f";
- } else if (value instanceof Double) {
- /* bug for bug */
- double d = ((Double)value).doubleValue();
- if (Double.isInfinite(d))
- constString = ((d < 0) ? "-" : "") + "InfD";
- else
- constString = value.toString();
- }
- if (constString != null) {
- StringBuilder s = new StringBuilder("#undef ");
- s.append(cname); s.append("_"); s.append(fname); s.append(lineSep);
- s.append("#define "); s.append(cname); s.append("_");
- s.append(fname); s.append(" "); s.append(constString);
- return s.toString();
- }
-
- }
- }
- return null;
- }
-
- /*
- * Deal with the C pre-processor.
- */
- protected String cppGuardBegin() {
- return "#ifdef __cplusplus" + lineSep + "extern \"C\" {" + lineSep + "#endif";
- }
-
- protected String cppGuardEnd() {
- return "#ifdef __cplusplus" + lineSep + "}" + lineSep + "#endif";
- }
-
- protected String guardBegin(String cname) {
- return "/* Header for class " + cname + " */" + lineSep + lineSep +
- "#ifndef _Included_" + cname + lineSep +
- "#define _Included_" + cname;
- }
-
- protected String guardEnd(String cname) {
- return "#endif";
- }
-
- /*
- * File name and file preamble related operations.
- */
- protected void writeFileTop(OutputStream o) throws Util.Exit {
- PrintWriter pw = wrapWriter(o);
- pw.println("/* DO NOT EDIT THIS FILE - it is machine generated */" + lineSep +
- getIncludes());
- }
-
- protected String baseFileName(CharSequence className) {
- return mangler.mangle(className, Mangle.Type.CLASS);
- }
-
- protected FileObject getFileObject(CharSequence className) throws IOException {
- String name = baseFileName(className) + getFileSuffix();
- return fileManager.getFileForOutput(StandardLocation.SOURCE_OUTPUT, "", name, null);
- }
-
- protected String getFileSuffix() {
- return ".h";
- }
-
- /**
- * Including super classes' fields.
- */
-
- List<VariableElement> getAllFields(TypeElement subclazz) {
- List<VariableElement> fields = new ArrayList<>();
- TypeElement cd = null;
- Stack<TypeElement> s = new Stack<>();
-
- cd = subclazz;
- while (true) {
- s.push(cd);
- TypeElement c = (TypeElement) (types.asElement(cd.getSuperclass()));
- if (c == null)
- break;
- cd = c;
- }
-
- while (!s.empty()) {
- cd = s.pop();
- fields.addAll(ElementFilter.fieldsIn(cd.getEnclosedElements()));
- }
-
- return fields;
- }
-
- // c.f. MethodDoc.signature
- String signature(ExecutableElement e) {
- StringBuilder sb = new StringBuilder("(");
- String sep = "";
- for (VariableElement p: e.getParameters()) {
- sb.append(sep);
- sb.append(types.erasure(p.asType()).toString());
- sep = ",";
- }
- sb.append(")");
- return sb.toString();
- }
-}
-
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/InternalError.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2007, 2008, 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.javah;
-
-/**
- * <p><b>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.</b>
- */
-public class InternalError extends Error {
- private static final long serialVersionUID = 8411861562497165022L;
- InternalError(String msg, Throwable cause) {
- super("Internal error: " + msg);
- initCause(cause);
- }
-}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/JNI.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,185 +0,0 @@
-/*
- * Copyright (c) 2002, 2010, 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.javah;
-
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.List;
-import javax.lang.model.element.Element;
-import javax.lang.model.element.ExecutableElement;
-import javax.lang.model.element.Modifier;
-import javax.lang.model.element.TypeElement;
-import javax.lang.model.element.VariableElement;
-import javax.lang.model.type.ArrayType;
-import javax.lang.model.type.TypeMirror;
-import javax.lang.model.util.ElementFilter;
-
-
-/**
- * Header file generator for JNI.
- *
- * <p><b>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.</b></p>
- *
- * @author Sucheta Dambalkar(Revised)
- */
-public class JNI extends Gen {
- JNI(Util util) {
- super(util);
- }
-
- public String getIncludes() {
- return "#include <jni.h>";
- }
-
- public void write(OutputStream o, TypeElement clazz) throws Util.Exit {
- try {
- String cname = mangler.mangle(clazz.getQualifiedName(), Mangle.Type.CLASS);
- PrintWriter pw = wrapWriter(o);
- pw.println(guardBegin(cname));
- pw.println(cppGuardBegin());
-
- /* Write statics. */
- List<VariableElement> classfields = getAllFields(clazz);
-
- for (VariableElement v: classfields) {
- if (!v.getModifiers().contains(Modifier.STATIC))
- continue;
- String s = null;
- s = defineForStatic(clazz, v);
- if (s != null) {
- pw.println(s);
- }
- }
-
- /* Write methods. */
- List<ExecutableElement> classmethods = ElementFilter.methodsIn(clazz.getEnclosedElements());
- for (ExecutableElement md: classmethods) {
- if(md.getModifiers().contains(Modifier.NATIVE)){
- TypeMirror mtr = types.erasure(md.getReturnType());
- String sig = signature(md);
- TypeSignature newtypesig = new TypeSignature(elems);
- CharSequence methodName = md.getSimpleName();
- boolean longName = false;
- for (ExecutableElement md2: classmethods) {
- if ((md2 != md)
- && (methodName.equals(md2.getSimpleName()))
- && (md2.getModifiers().contains(Modifier.NATIVE)))
- longName = true;
-
- }
- pw.println("/*");
- pw.println(" * Class: " + cname);
- pw.println(" * Method: " +
- mangler.mangle(methodName, Mangle.Type.FIELDSTUB));
- pw.println(" * Signature: " + newtypesig.getTypeSignature(sig, mtr));
- pw.println(" */");
- pw.println("JNIEXPORT " + jniType(mtr) +
- " JNICALL " +
- mangler.mangleMethod(md, clazz,
- (longName) ?
- Mangle.Type.METHOD_JNI_LONG :
- Mangle.Type.METHOD_JNI_SHORT));
- pw.print(" (JNIEnv *, ");
- List<? extends VariableElement> paramargs = md.getParameters();
- List<TypeMirror> args = new ArrayList<>();
- for (VariableElement p: paramargs) {
- args.add(types.erasure(p.asType()));
- }
- if (md.getModifiers().contains(Modifier.STATIC))
- pw.print("jclass");
- else
- pw.print("jobject");
-
- for (TypeMirror arg: args) {
- pw.print(", ");
- pw.print(jniType(arg));
- }
- pw.println(");" + lineSep);
- }
- }
- pw.println(cppGuardEnd());
- pw.println(guardEnd(cname));
- } catch (TypeSignature.SignatureException e) {
- util.error("jni.sigerror", e.getMessage());
- }
- }
-
-
- protected final String jniType(TypeMirror t) throws Util.Exit {
- TypeElement throwable = elems.getTypeElement("java.lang.Throwable");
- TypeElement jClass = elems.getTypeElement("java.lang.Class");
- TypeElement jString = elems.getTypeElement("java.lang.String");
- Element tclassDoc = types.asElement(t);
-
-
- switch (t.getKind()) {
- case ARRAY: {
- TypeMirror ct = ((ArrayType) t).getComponentType();
- switch (ct.getKind()) {
- case BOOLEAN: return "jbooleanArray";
- case BYTE: return "jbyteArray";
- case CHAR: return "jcharArray";
- case SHORT: return "jshortArray";
- case INT: return "jintArray";
- case LONG: return "jlongArray";
- case FLOAT: return "jfloatArray";
- case DOUBLE: return "jdoubleArray";
- case ARRAY:
- case DECLARED: return "jobjectArray";
- default: throw new Error(ct.toString());
- }
- }
-
- case VOID: return "void";
- case BOOLEAN: return "jboolean";
- case BYTE: return "jbyte";
- case CHAR: return "jchar";
- case SHORT: return "jshort";
- case INT: return "jint";
- case LONG: return "jlong";
- case FLOAT: return "jfloat";
- case DOUBLE: return "jdouble";
-
- case DECLARED: {
- if (tclassDoc.equals(jString))
- return "jstring";
- else if (types.isAssignable(t, throwable.asType()))
- return "jthrowable";
- else if (types.isAssignable(t, jClass.asType()))
- return "jclass";
- else
- return "jobject";
- }
- }
-
- util.bug("jni.unknown.type");
- return null; /* dead code. */
- }
-}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/JavahFileManager.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 2007, 2016, 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.javah;
-
-import java.io.PrintWriter;
-import java.nio.charset.Charset;
-import javax.tools.DiagnosticListener;
-import javax.tools.JavaFileObject;
-
-import com.sun.tools.javac.file.JavacFileManager;
-import com.sun.tools.javac.util.Context;
-
-/**
- * javah's implementation of JavaFileManager.
- *
- * <p><b>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.</b>
- */
-class JavahFileManager extends JavacFileManager {
- private JavahFileManager(Context context, Charset charset) {
- super(context, true, charset);
- setSymbolFileEnabled(false);
- }
-
- static JavahFileManager create(final DiagnosticListener<? super JavaFileObject> dl, PrintWriter log) {
- Context javac_context = new Context();
-
- if (dl != null)
- javac_context.put(DiagnosticListener.class, dl);
- javac_context.put(com.sun.tools.javac.util.Log.errKey, log);
-
- return new JavahFileManager(javac_context, null);
- }
-}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/JavahTask.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,775 +0,0 @@
-/*
- * Copyright (c) 2002, 2016, 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.javah;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.io.Writer;
-import java.nio.file.NoSuchFileException;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.MissingResourceException;
-import java.util.Objects;
-import java.util.ResourceBundle;
-import java.util.Set;
-
-import javax.annotation.processing.AbstractProcessor;
-import javax.annotation.processing.Messager;
-import javax.annotation.processing.ProcessingEnvironment;
-import javax.annotation.processing.RoundEnvironment;
-import javax.annotation.processing.SupportedAnnotationTypes;
-import javax.lang.model.SourceVersion;
-import javax.lang.model.element.ExecutableElement;
-import javax.lang.model.element.TypeElement;
-import javax.lang.model.element.VariableElement;
-import javax.lang.model.type.ArrayType;
-import javax.lang.model.type.DeclaredType;
-import javax.lang.model.type.TypeMirror;
-import javax.lang.model.type.TypeVisitor;
-import javax.lang.model.util.ElementFilter;
-import javax.lang.model.util.SimpleTypeVisitor9;
-import javax.lang.model.util.Types;
-import javax.tools.Diagnostic;
-import javax.tools.DiagnosticListener;
-import javax.tools.JavaCompiler;
-import javax.tools.JavaCompiler.CompilationTask;
-import javax.tools.JavaFileManager;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.StandardLocation;
-import javax.tools.ToolProvider;
-
-import com.sun.tools.javac.code.Symbol.CompletionFailure;
-import com.sun.tools.javac.main.CommandLine;
-import com.sun.tools.javac.util.DefinedBy;
-import com.sun.tools.javac.util.DefinedBy.Api;
-
-import static javax.tools.Diagnostic.Kind.*;
-
-
-/**
- * Javah generates support files for native methods.
- * Parse commandline options and invokes javadoc to execute those commands.
- *
- * <p><b>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.</b></p>
- *
- * @author Sucheta Dambalkar
- * @author Jonathan Gibbons
- */
-public class JavahTask implements NativeHeaderTool.NativeHeaderTask {
- public class BadArgs extends Exception {
- private static final long serialVersionUID = 1479361270874789045L;
- BadArgs(String key, Object... args) {
- super(JavahTask.this.getMessage(key, args));
- this.key = key;
- this.args = args;
- }
-
- BadArgs showUsage(boolean b) {
- showUsage = b;
- return this;
- }
-
- final String key;
- final Object[] args;
- boolean showUsage;
- }
-
- static abstract class Option {
- Option(boolean hasArg, String... aliases) {
- this.hasArg = hasArg;
- this.aliases = aliases;
- }
-
- boolean isHidden() {
- return false;
- }
-
- boolean matches(String opt) {
- for (String a: aliases) {
- if (a.equals(opt))
- return true;
- }
- return false;
- }
-
- boolean ignoreRest() {
- return false;
- }
-
- abstract void process(JavahTask task, String opt, String arg) throws BadArgs;
-
- final boolean hasArg;
- final String[] aliases;
- }
-
- static abstract class HiddenOption extends Option {
- HiddenOption(boolean hasArg, String... aliases) {
- super(hasArg, aliases);
- }
-
- @Override
- boolean isHidden() {
- return true;
- }
- }
-
- static final Option[] recognizedOptions = {
- new Option(true, "-o") {
- void process(JavahTask task, String opt, String arg) {
- task.ofile = new File(arg);
- }
- },
-
- new Option(true, "-d") {
- void process(JavahTask task, String opt, String arg) {
- task.odir = new File(arg);
- }
- },
-
- new HiddenOption(true, "-td") {
- void process(JavahTask task, String opt, String arg) {
- // ignored; for backwards compatibility
- }
- },
-
- new Option(false, "-v", "-verbose") {
- void process(JavahTask task, String opt, String arg) {
- task.verbose = true;
- }
- },
-
- new Option(false, "-h", "-help", "--help", "-?") {
- void process(JavahTask task, String opt, String arg) {
- task.help = true;
- }
- },
-
- new HiddenOption(false, "-trace") {
- void process(JavahTask task, String opt, String arg) {
- task.trace = true;
- }
- },
-
- new Option(false, "-version") {
- void process(JavahTask task, String opt, String arg) {
- task.version = true;
- }
- },
-
- new HiddenOption(false, "-fullversion") {
- void process(JavahTask task, String opt, String arg) {
- task.fullVersion = true;
- }
- },
-
- new Option(false, "-jni") {
- void process(JavahTask task, String opt, String arg) {
- task.jni = true;
- }
- },
-
- new Option(false, "-force") {
- void process(JavahTask task, String opt, String arg) {
- task.force = true;
- }
- },
-
- new HiddenOption(false, "-Xnew") {
- void process(JavahTask task, String opt, String arg) {
- // we're already using the new javah
- }
- },
-
- new HiddenOption(false, "-llni", "-Xllni") {
- void process(JavahTask task, String opt, String arg) {
- task.llni = true;
- }
- },
-
- new HiddenOption(false, "-llnidouble") {
- void process(JavahTask task, String opt, String arg) {
- task.llni = true;
- task.doubleAlign = true;
- }
- },
-
- new HiddenOption(false) {
- boolean matches(String opt) {
- return opt.startsWith("-XD");
- }
- void process(JavahTask task, String opt, String arg) {
- task.javac_extras.add(opt);
- }
- },
- };
-
- JavahTask() {
- }
-
- JavahTask(Writer out,
- JavaFileManager fileManager,
- DiagnosticListener<? super JavaFileObject> diagnosticListener,
- Iterable<String> options,
- Iterable<String> classes) {
- this();
- this.log = getPrintWriterForWriter(out);
- this.fileManager = fileManager;
- this.diagnosticListener = diagnosticListener;
-
- try {
- handleOptions(options, false);
- } catch (BadArgs e) {
- throw new IllegalArgumentException(e.getMessage());
- }
-
- this.classes = new ArrayList<>();
- if (classes != null) {
- for (String classname: classes) {
- Objects.requireNonNull(classname);
- this.classes.add(classname);
- }
- }
- }
-
- public void setLocale(Locale locale) {
- if (locale == null)
- locale = Locale.getDefault();
- task_locale = locale;
- }
-
- public void setLog(PrintWriter log) {
- this.log = log;
- }
-
- public void setLog(OutputStream s) {
- setLog(getPrintWriterForStream(s));
- }
-
- static PrintWriter getPrintWriterForStream(OutputStream s) {
- return new PrintWriter(s, true);
- }
-
- static PrintWriter getPrintWriterForWriter(Writer w) {
- if (w == null)
- return getPrintWriterForStream(null);
- else if (w instanceof PrintWriter)
- return (PrintWriter) w;
- else
- return new PrintWriter(w, true);
- }
-
- public void setDiagnosticListener(DiagnosticListener<? super JavaFileObject> dl) {
- diagnosticListener = dl;
- }
-
- public void setDiagnosticListener(OutputStream s) {
- setDiagnosticListener(getDiagnosticListenerForStream(s));
- }
-
- private DiagnosticListener<JavaFileObject> getDiagnosticListenerForStream(OutputStream s) {
- return getDiagnosticListenerForWriter(getPrintWriterForStream(s));
- }
-
- private DiagnosticListener<JavaFileObject> getDiagnosticListenerForWriter(Writer w) {
- final PrintWriter pw = getPrintWriterForWriter(w);
- return diagnostic -> {
- if (diagnostic.getKind() == Diagnostic.Kind.ERROR) {
- pw.print(getMessage("err.prefix"));
- pw.print(" ");
- }
- pw.println(diagnostic.getMessage(null));
- };
- }
-
- int run(String[] args) {
- try {
- handleOptions(args);
- boolean ok = run();
- return ok ? 0 : 1;
- } catch (BadArgs e) {
- diagnosticListener.report(createDiagnostic(e.key, e.args));
- return 1;
- } catch (InternalError e) {
- diagnosticListener.report(createDiagnostic("err.internal.error", e.getMessage()));
- return 1;
- } catch (Util.Exit e) {
- return e.exitValue;
- } finally {
- log.flush();
- }
- }
-
- public void handleOptions(String[] args) throws BadArgs {
- handleOptions(Arrays.asList(args), true);
- }
-
- private void handleOptions(Iterable<String> args, boolean allowClasses) throws BadArgs {
- if (log == null) {
- log = getPrintWriterForStream(System.out);
- if (diagnosticListener == null)
- diagnosticListener = getDiagnosticListenerForStream(System.err);
- } else {
- if (diagnosticListener == null)
- diagnosticListener = getDiagnosticListenerForWriter(log);
- }
-
- if (fileManager == null)
- fileManager = getDefaultFileManager(diagnosticListener, log);
-
- Iterator<String> iter = expandAtArgs(args).iterator();
- noArgs = !iter.hasNext();
-
- while (iter.hasNext()) {
- String arg = iter.next();
- if (arg.startsWith("-"))
- handleOption(arg, iter);
- else if (allowClasses) {
- if (classes == null)
- classes = new ArrayList<>();
- classes.add(arg);
- while (iter.hasNext())
- classes.add(iter.next());
- } else
- throw new BadArgs("err.unknown.option", arg).showUsage(true);
- }
-
- if ((classes == null || classes.size() == 0) &&
- !(noArgs || help || version || fullVersion)) {
- throw new BadArgs("err.no.classes.specified");
- }
-
- if (jni && llni)
- throw new BadArgs("jni.llni.mixed");
-
- if (odir != null && ofile != null)
- throw new BadArgs("dir.file.mixed");
- }
-
- private void handleOption(String name, Iterator<String> rest) throws BadArgs {
- for (Option o: recognizedOptions) {
- if (o.matches(name)) {
- if (o.hasArg) {
- if (rest.hasNext())
- o.process(this, name, rest.next());
- else
- throw new BadArgs("err.missing.arg", name).showUsage(true);
- } else
- o.process(this, name, null);
-
- if (o.ignoreRest()) {
- while (rest.hasNext())
- rest.next();
- }
- return;
- }
- }
-
- if (fileManager.handleOption(name, rest))
- return;
-
- throw new BadArgs("err.unknown.option", name).showUsage(true);
- }
-
- private Iterable<String> expandAtArgs(Iterable<String> args) throws BadArgs {
- try {
- List<String> l = new ArrayList<>();
- for (String arg: args) l.add(arg);
- return Arrays.asList(CommandLine.parse(l.toArray(new String[l.size()])));
- } catch (FileNotFoundException | NoSuchFileException e) {
- throw new BadArgs("at.args.file.not.found", e.getLocalizedMessage());
- } catch (IOException e) {
- throw new BadArgs("at.args.io.exception", e.getLocalizedMessage());
- }
- }
-
- public Boolean call() {
- return run();
- }
-
- public boolean run() throws Util.Exit {
-
- if (!javac_extras.contains("-XDsuppress-tool-removal-message")) {
- log.println(getMessage("javah.misc.Deprecation"));
- }
-
- Util util = new Util(log, diagnosticListener);
-
- if (noArgs || help) {
- showHelp();
- return help; // treat noArgs as an error for purposes of exit code
- }
-
- if (version || fullVersion) {
- showVersion(fullVersion);
- return true;
- }
-
- util.verbose = verbose;
-
- Gen g;
-
- if (llni)
- g = new LLNI(doubleAlign, util);
- else {
- g = new JNI(util);
- }
-
- if (ofile != null) {
- if (!(fileManager instanceof StandardJavaFileManager)) {
- diagnosticListener.report(createDiagnostic("err.cant.use.option.for.fm", "-o"));
- return false;
- }
- Iterable<? extends JavaFileObject> iter =
- ((StandardJavaFileManager) fileManager).getJavaFileObjectsFromFiles(Collections.singleton(ofile));
- JavaFileObject fo = iter.iterator().next();
- g.setOutFile(fo);
- } else {
- if (odir != null) {
- if (!(fileManager instanceof StandardJavaFileManager)) {
- diagnosticListener.report(createDiagnostic("err.cant.use.option.for.fm", "-d"));
- return false;
- }
-
- if (!odir.exists())
- if (!odir.mkdirs())
- util.error("cant.create.dir", odir.toString());
- try {
- ((StandardJavaFileManager) fileManager).setLocation(StandardLocation.CLASS_OUTPUT, Collections.singleton(odir));
- } catch (IOException e) {
- Object msg = e.getLocalizedMessage();
- if (msg == null) {
- msg = e;
- }
- diagnosticListener.report(createDiagnostic("err.ioerror", odir, msg));
- return false;
- }
- }
- g.setFileManager(fileManager);
- }
-
- /*
- * Force set to false will turn off smarts about checking file
- * content before writing.
- */
- g.setForce(force);
-
- if (fileManager instanceof JavahFileManager)
- ((JavahFileManager) fileManager).setSymbolFileEnabled(false);
-
- JavaCompiler c = ToolProvider.getSystemJavaCompiler();
- List<String> opts = new ArrayList<>();
- opts.add("-proc:only");
- opts.addAll(javac_extras);
-
- CompilationTask t;
- try {
- t = c.getTask(log, fileManager, diagnosticListener, opts, classes, null);
- } catch (IllegalArgumentException e) {
- util.error("bad.arg", e.getMessage());
- return false;
- }
-
- JavahProcessor p = new JavahProcessor(g);
- t.setProcessors(Collections.singleton(p));
-
- boolean ok = t.call();
- if (p.exit != null)
- throw new Util.Exit(p.exit);
- return ok;
-
- }
-
- static StandardJavaFileManager getDefaultFileManager(final DiagnosticListener<? super JavaFileObject> dl, PrintWriter log) {
- return JavahFileManager.create(dl, log);
- }
-
- private void showHelp() {
- log.println(getMessage("main.usage", progname));
-
- for (Option o: recognizedOptions) {
- if (o.isHidden())
- continue;
- String name = o.aliases[0].substring(1); // there must always be at least one name
- log.println(getMessage("main.opt." + name));
- }
-
- String[] fmOptions = {
- "--module-path", "--system",
- "--class-path", "-classpath", "-cp",
- "-bootclasspath"
- };
-
- for (String o: fmOptions) {
- if (fileManager.isSupportedOption(o) == -1)
- continue;
- String name = o.replaceAll("^-+", "").replaceAll("-+", "_");
- log.println(getMessage("main.opt." + name));
- }
-
- log.println(getMessage("main.usage.foot"));
- }
-
- private void showVersion(boolean full) {
- log.println(version(full));
- }
-
- private static final String versionRBName = "com.sun.tools.javah.resources.version";
- private static ResourceBundle versionRB;
-
- private String version(boolean full) {
- String msgKey = (full ? "javah.fullVersion" : "javah.version");
- String versionKey = (full ? "full" : "release");
- // versionKey=product: mm.nn.oo[-milestone]
- // versionKey=full: mm.mm.oo[-milestone]-build
- if (versionRB == null) {
- try {
- versionRB = ResourceBundle.getBundle(versionRBName);
- } catch (MissingResourceException e) {
- return getMessage("version.resource.missing", System.getProperty("java.version"));
- }
- }
- try {
- return getMessage(msgKey, "javah", versionRB.getString(versionKey));
- }
- catch (MissingResourceException e) {
- return getMessage("version.unknown", System.getProperty("java.version"));
- }
- }
-
- private Diagnostic<JavaFileObject> createDiagnostic(final String key, final Object... args) {
- return new Diagnostic<JavaFileObject>() {
- @DefinedBy(Api.COMPILER)
- public Kind getKind() {
- return Diagnostic.Kind.ERROR;
- }
-
- @DefinedBy(Api.COMPILER)
- public JavaFileObject getSource() {
- return null;
- }
-
- @DefinedBy(Api.COMPILER)
- public long getPosition() {
- return Diagnostic.NOPOS;
- }
-
- @DefinedBy(Api.COMPILER)
- public long getStartPosition() {
- return Diagnostic.NOPOS;
- }
-
- @DefinedBy(Api.COMPILER)
- public long getEndPosition() {
- return Diagnostic.NOPOS;
- }
-
- @DefinedBy(Api.COMPILER)
- public long getLineNumber() {
- return Diagnostic.NOPOS;
- }
-
- @DefinedBy(Api.COMPILER)
- public long getColumnNumber() {
- return Diagnostic.NOPOS;
- }
-
- @DefinedBy(Api.COMPILER)
- public String getCode() {
- return key;
- }
-
- @DefinedBy(Api.COMPILER)
- public String getMessage(Locale locale) {
- return JavahTask.this.getMessage(locale, key, args);
- }
-
- };
- }
-
- private String getMessage(String key, Object... args) {
- return getMessage(task_locale, key, args);
- }
-
- private String getMessage(Locale locale, String key, Object... args) {
- if (bundles == null) {
- // could make this a HashMap<Locale,SoftReference<ResourceBundle>>
- // and for efficiency, keep a hard reference to the bundle for the task
- // locale
- bundles = new HashMap<>();
- }
-
- if (locale == null)
- locale = Locale.getDefault();
-
- ResourceBundle b = bundles.get(locale);
- if (b == null) {
- try {
- b = ResourceBundle.getBundle("com.sun.tools.javah.resources.l10n", locale);
- bundles.put(locale, b);
- } catch (MissingResourceException e) {
- throw new InternalError("Cannot find javah resource bundle for locale " + locale, e);
- }
- }
-
- try {
- return MessageFormat.format(b.getString(key), args);
- } catch (MissingResourceException e) {
- return key;
- //throw new InternalError(e, key);
- }
- }
-
- File ofile;
- File odir;
- String bootcp;
- String usercp;
- List<String> classes;
- boolean verbose;
- boolean noArgs;
- boolean help;
- boolean trace;
- boolean version;
- boolean fullVersion;
- boolean jni;
- boolean llni;
- boolean doubleAlign;
- boolean force;
- Set<String> javac_extras = new LinkedHashSet<>();
-
- PrintWriter log;
- JavaFileManager fileManager;
- DiagnosticListener<? super JavaFileObject> diagnosticListener;
- Locale task_locale;
- Map<Locale, ResourceBundle> bundles;
-
- private static final String progname = "javah";
-
- @SupportedAnnotationTypes("*")
- class JavahProcessor extends AbstractProcessor {
- private Messager messager;
-
- JavahProcessor(Gen g) {
- this.g = g;
- }
-
- @Override @DefinedBy(Api.ANNOTATION_PROCESSING)
- public SourceVersion getSupportedSourceVersion() {
- // since this is co-bundled with javac, we can assume it supports
- // the latest source version
- return SourceVersion.latest();
- }
-
- @Override @DefinedBy(Api.ANNOTATION_PROCESSING)
- public void init(ProcessingEnvironment pEnv) {
- super.init(pEnv);
- messager = processingEnv.getMessager();
- }
-
- @DefinedBy(Api.ANNOTATION_PROCESSING)
- public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
- try {
- Set<TypeElement> classes = getAllClasses(ElementFilter.typesIn(roundEnv.getRootElements()));
- if (classes.size() > 0) {
- checkMethodParameters(classes);
- g.setProcessingEnvironment(processingEnv);
- g.setClasses(classes);
- g.run();
- }
- } catch (CompletionFailure cf) {
- messager.printMessage(ERROR, getMessage("class.not.found", cf.sym.getQualifiedName().toString()));
- } catch (ClassNotFoundException cnfe) {
- messager.printMessage(ERROR, getMessage("class.not.found", cnfe.getMessage()));
- } catch (IOException ioe) {
- messager.printMessage(ERROR, getMessage("io.exception", ioe.getMessage()));
- } catch (Util.Exit e) {
- exit = e;
- }
-
- return true;
- }
-
- private Set<TypeElement> getAllClasses(Set<? extends TypeElement> classes) {
- Set<TypeElement> allClasses = new LinkedHashSet<>();
- getAllClasses0(classes, allClasses);
- return allClasses;
- }
-
- private void getAllClasses0(Iterable<? extends TypeElement> classes, Set<TypeElement> allClasses) {
- for (TypeElement c: classes) {
- allClasses.add(c);
- getAllClasses0(ElementFilter.typesIn(c.getEnclosedElements()), allClasses);
- }
- }
-
- // 4942232:
- // check that classes exist for all the parameters of native methods
- private void checkMethodParameters(Set<TypeElement> classes) {
- Types types = processingEnv.getTypeUtils();
- for (TypeElement te: classes) {
- for (ExecutableElement ee: ElementFilter.methodsIn(te.getEnclosedElements())) {
- for (VariableElement ve: ee.getParameters()) {
- TypeMirror tm = ve.asType();
- checkMethodParametersVisitor.visit(tm, types);
- }
- }
- }
- }
-
- private TypeVisitor<Void,Types> checkMethodParametersVisitor =
- new SimpleTypeVisitor9<Void,Types>() {
- @Override @DefinedBy(Api.LANGUAGE_MODEL)
- public Void visitArray(ArrayType t, Types types) {
- visit(t.getComponentType(), types);
- return null;
- }
- @Override @DefinedBy(Api.LANGUAGE_MODEL)
- public Void visitDeclared(DeclaredType t, Types types) {
- t.asElement().getKind(); // ensure class exists
- for (TypeMirror st: types.directSupertypes(t))
- visit(st, types);
- return null;
- }
- };
-
- private Gen g;
- private Util.Exit exit;
- }
-}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/JavahTool.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2009, 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.javah;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Writer;
-import java.nio.charset.Charset;
-import java.util.Arrays;
-import java.util.EnumSet;
-import java.util.Locale;
-import java.util.Set;
-import javax.lang.model.SourceVersion;
-import javax.tools.DiagnosticListener;
-import javax.tools.JavaFileManager;
-import javax.tools.JavaFileObject;
-import javax.tools.StandardJavaFileManager;
-
-import com.sun.tools.javac.util.DefinedBy;
-import com.sun.tools.javac.util.DefinedBy.Api;
-
-/*
- * <p><b>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.</b></p>
- */
-public class JavahTool implements NativeHeaderTool {
-
- public NativeHeaderTask getTask(Writer out,
- JavaFileManager fileManager,
- DiagnosticListener<? super JavaFileObject> diagnosticListener,
- Iterable<String> options,
- Iterable<String> classes) {
- return new JavahTask(out, fileManager, diagnosticListener, options, classes);
- }
-
- public StandardJavaFileManager getStandardFileManager(DiagnosticListener<? super JavaFileObject> diagnosticListener, Locale locale, Charset charset) {
- return JavahTask.getDefaultFileManager(diagnosticListener, null);
- }
-
- @DefinedBy(Api.COMPILER)
- public int run(InputStream in, OutputStream out, OutputStream err, String... arguments) {
- JavahTask t = new JavahTask(
- JavahTask.getPrintWriterForStream(out),
- null,
- null,
- Arrays.asList(arguments),
- null);
- return (t.run() ? 0 : 1);
- }
-
- @DefinedBy(Api.COMPILER)
- public Set<SourceVersion> getSourceVersions() {
- return EnumSet.allOf(SourceVersion.class);
- }
-
- @DefinedBy(Api.COMPILER)
- public int isSupportedOption(String option) {
- for (JavahTask.Option opt : JavahTask.recognizedOptions) {
- if (opt.matches(option))
- return (opt.hasArg ? 1 : 0);
- }
- return -1;
- }
-}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/LLNI.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,685 +0,0 @@
-/*
- * Copyright (c) 2002, 2014, 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.javah;
-
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-
-import java.util.Set;
-import javax.lang.model.element.Element;
-import javax.lang.model.element.ExecutableElement;
-import javax.lang.model.element.Modifier;
-import javax.lang.model.element.Name;
-import javax.lang.model.element.TypeElement;
-import javax.lang.model.element.VariableElement;
-import javax.lang.model.type.ArrayType;
-import javax.lang.model.type.PrimitiveType;
-import javax.lang.model.type.TypeKind;
-import javax.lang.model.type.TypeMirror;
-import javax.lang.model.type.TypeVisitor;
-import javax.lang.model.util.ElementFilter;
-import javax.lang.model.util.SimpleTypeVisitor9;
-
-import com.sun.tools.javac.util.DefinedBy;
-import com.sun.tools.javac.util.DefinedBy.Api;
-
-/*
- * <p><b>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.</b></p>
- *
- * @author Sucheta Dambalkar(Revised)
- */
-public class LLNI extends Gen {
-
- protected final char innerDelim = '$'; /* For inner classes */
- protected Set<String> doneHandleTypes;
- List<VariableElement> fields;
- List<ExecutableElement> methods;
- private boolean doubleAlign;
- private int padFieldNum = 0;
-
- LLNI(boolean doubleAlign, Util util) {
- super(util);
- this.doubleAlign = doubleAlign;
- }
-
- protected String getIncludes() {
- return "";
- }
-
- protected void write(OutputStream o, TypeElement clazz) throws Util.Exit {
- try {
- String cname = mangleClassName(clazz.getQualifiedName().toString());
- PrintWriter pw = wrapWriter(o);
- fields = ElementFilter.fieldsIn(clazz.getEnclosedElements());
- methods = ElementFilter.methodsIn(clazz.getEnclosedElements());
- generateDeclsForClass(pw, clazz, cname);
- // FIXME check if errors occurred on the PrintWriter and throw exception if so
- } catch (TypeSignature.SignatureException e) {
- util.error("llni.sigerror", e.getMessage());
- }
- }
-
- protected void generateDeclsForClass(PrintWriter pw,
- TypeElement clazz, String cname)
- throws TypeSignature.SignatureException, Util.Exit {
- doneHandleTypes = new HashSet<>();
- /* The following handle types are predefined in "typedefs.h". Suppress
- inclusion in the output by generating them "into the blue" here. */
- genHandleType(null, "java.lang.Class");
- genHandleType(null, "java.lang.ClassLoader");
- genHandleType(null, "java.lang.Object");
- genHandleType(null, "java.lang.String");
- genHandleType(null, "java.lang.Thread");
- genHandleType(null, "java.lang.ThreadGroup");
- genHandleType(null, "java.lang.Throwable");
-
- pw.println("/* LLNI Header for class " + clazz.getQualifiedName() + " */" + lineSep);
- pw.println("#ifndef _Included_" + cname);
- pw.println("#define _Included_" + cname);
- pw.println("#include \"typedefs.h\"");
- pw.println("#include \"llni.h\"");
- pw.println("#include \"jni.h\"" + lineSep);
-
- forwardDecls(pw, clazz);
- structSectionForClass(pw, clazz, cname);
- methodSectionForClass(pw, clazz, cname);
- pw.println("#endif");
- }
-
- protected void genHandleType(PrintWriter pw, String clazzname) {
- String cname = mangleClassName(clazzname);
- if (!doneHandleTypes.contains(cname)) {
- doneHandleTypes.add(cname);
- if (pw != null) {
- pw.println("#ifndef DEFINED_" + cname);
- pw.println(" #define DEFINED_" + cname);
- pw.println(" GEN_HANDLE_TYPES(" + cname + ");");
- pw.println("#endif" + lineSep);
- }
- }
- }
-
- protected String mangleClassName(String s) {
- return s.replace('.', '_')
- .replace('/', '_')
- .replace(innerDelim, '_');
- }
-
- protected void forwardDecls(PrintWriter pw, TypeElement clazz)
- throws TypeSignature.SignatureException {
- TypeElement object = elems.getTypeElement("java.lang.Object");
- if (clazz.equals(object))
- return;
-
- genHandleType(pw, clazz.getQualifiedName().toString());
- TypeElement superClass = (TypeElement) (types.asElement(clazz.getSuperclass()));
-
- if (superClass != null) {
- String superClassName = superClass.getQualifiedName().toString();
- forwardDecls(pw, superClass);
- }
-
- for (VariableElement field: fields) {
-
- if (!field.getModifiers().contains(Modifier.STATIC)) {
- TypeMirror t = types.erasure(field.asType());
- TypeSignature newTypeSig = new TypeSignature(elems);
- String tname = newTypeSig.qualifiedTypeName(t);
- String sig = newTypeSig.getTypeSignature(tname);
-
- if (sig.charAt(0) != '[')
- forwardDeclsFromSig(pw, sig);
- }
- }
-
- for (ExecutableElement method: methods) {
-
- if (method.getModifiers().contains(Modifier.NATIVE)) {
- TypeMirror retType = types.erasure(method.getReturnType());
- String typesig = signature(method);
- TypeSignature newTypeSig = new TypeSignature(elems);
- String sig = newTypeSig.getTypeSignature(typesig, retType);
-
- if (sig.charAt(0) != '[')
- forwardDeclsFromSig(pw, sig);
-
- }
- }
- }
-
- protected void forwardDeclsFromSig(PrintWriter pw, String sig) {
- int len = sig.length();
- int i = sig.charAt(0) == '(' ? 1 : 0;
-
- /* Skip the initial "(". */
- while (i < len) {
- if (sig.charAt(i) == 'L') {
- int j = i + 1;
- while (sig.charAt(j) != ';') j++;
- genHandleType(pw, sig.substring(i + 1, j));
- i = j + 1;
- } else {
- i++;
- }
- }
- }
-
- protected void structSectionForClass(PrintWriter pw,
- TypeElement jclazz, String cname) {
-
- String jname = jclazz.getQualifiedName().toString();
-
- if (cname.equals("java_lang_Object")) {
- pw.println("/* struct java_lang_Object is defined in typedefs.h. */");
- pw.println();
- return;
- }
- pw.println("#if !defined(__i386)");
- pw.println("#pragma pack(4)");
- pw.println("#endif");
- pw.println();
- pw.println("struct " + cname + " {");
- pw.println(" ObjHeader h;");
- pw.print(fieldDefs(jclazz, cname));
-
- if (jname.equals("java.lang.Class"))
- pw.println(" Class *LLNI_mask(cClass);" +
- " /* Fake field; don't access (see oobj.h) */");
- pw.println("};" + lineSep + lineSep + "#pragma pack()");
- pw.println();
- return;
- }
-
- private static class FieldDefsRes {
- public String className; /* Name of the current class. */
- public FieldDefsRes parent;
- public String s;
- public int byteSize;
- public boolean bottomMost;
- public boolean printedOne = false;
-
- FieldDefsRes(TypeElement clazz, FieldDefsRes parent, boolean bottomMost) {
- this.className = clazz.getQualifiedName().toString();
- this.parent = parent;
- this.bottomMost = bottomMost;
- int byteSize = 0;
- if (parent == null) this.s = "";
- else this.s = parent.s;
- }
- }
-
- /* Returns "true" iff added a field. */
- private boolean doField(FieldDefsRes res, VariableElement field,
- String cname, boolean padWord) {
-
- String fieldDef = addStructMember(field, cname, padWord);
- if (fieldDef != null) {
- if (!res.printedOne) { /* add separator */
- if (res.bottomMost) {
- if (res.s.length() != 0)
- res.s = res.s + " /* local members: */" + lineSep;
- } else {
- res.s = res.s + " /* inherited members from " +
- res.className + ": */" + lineSep;
- }
- res.printedOne = true;
- }
- res.s = res.s + fieldDef;
- return true;
- }
-
- // Otherwise.
- return false;
- }
-
- private int doTwoWordFields(FieldDefsRes res, TypeElement clazz,
- int offset, String cname, boolean padWord) {
- boolean first = true;
- List<VariableElement> fields = ElementFilter.fieldsIn(clazz.getEnclosedElements());
-
- for (VariableElement field: fields) {
- TypeKind tk = field.asType().getKind();
- boolean twoWords = (tk == TypeKind.LONG || tk == TypeKind.DOUBLE);
- if (twoWords && doField(res, field, cname, first && padWord)) {
- offset += 8; first = false;
- }
- }
- return offset;
- }
-
- String fieldDefs(TypeElement clazz, String cname) {
- FieldDefsRes res = fieldDefs(clazz, cname, true);
- return res.s;
- }
-
- FieldDefsRes fieldDefs(TypeElement clazz, String cname,
- boolean bottomMost){
- FieldDefsRes res;
- int offset;
- boolean didTwoWordFields = false;
-
- TypeElement superclazz = (TypeElement) types.asElement(clazz.getSuperclass());
-
- if (superclazz != null) {
- String supername = superclazz.getQualifiedName().toString();
- res = new FieldDefsRes(clazz,
- fieldDefs(superclazz, cname, false),
- bottomMost);
- offset = res.parent.byteSize;
- } else {
- res = new FieldDefsRes(clazz, null, bottomMost);
- offset = 0;
- }
-
- List<VariableElement> fields = ElementFilter.fieldsIn(clazz.getEnclosedElements());
-
- for (VariableElement field: fields) {
-
- if (doubleAlign && !didTwoWordFields && (offset % 8) == 0) {
- offset = doTwoWordFields(res, clazz, offset, cname, false);
- didTwoWordFields = true;
- }
-
- TypeKind tk = field.asType().getKind();
- boolean twoWords = (tk == TypeKind.LONG || tk == TypeKind.DOUBLE);
-
- if (!doubleAlign || !twoWords) {
- if (doField(res, field, cname, false)) offset += 4;
- }
-
- }
-
- if (doubleAlign && !didTwoWordFields) {
- if ((offset % 8) != 0) offset += 4;
- offset = doTwoWordFields(res, clazz, offset, cname, true);
- }
-
- res.byteSize = offset;
- return res;
- }
-
- /* OVERRIDE: This method handles instance fields */
- protected String addStructMember(VariableElement member, String cname,
- boolean padWord) {
- String res = null;
-
- if (member.getModifiers().contains(Modifier.STATIC)) {
- res = addStaticStructMember(member, cname);
- // if (res == null) /* JNI didn't handle it, print comment. */
- // res = " /* Inaccessible static: " + member + " */" + lineSep;
- } else {
- TypeMirror mt = types.erasure(member.asType());
- if (padWord) res = " java_int padWord" + padFieldNum++ + ";" + lineSep;
- res = " " + llniType(mt, false, false) + " " + llniFieldName(member);
- if (isLongOrDouble(mt)) res = res + "[2]";
- res = res + ";" + lineSep;
- }
- return res;
- }
-
- static private final boolean isWindows =
- System.getProperty("os.name").startsWith("Windows");
-
- /*
- * This method only handles static final fields.
- */
- protected String addStaticStructMember(VariableElement field, String cname) {
- String res = null;
- Object exp = null;
-
- if (!field.getModifiers().contains(Modifier.STATIC))
- return res;
- if (!field.getModifiers().contains(Modifier.FINAL))
- return res;
-
- exp = field.getConstantValue();
-
- if (exp != null) {
- /* Constant. */
-
- String cn = cname + "_" + field.getSimpleName();
- String suffix = null;
- long val = 0;
- /* Can only handle int, long, float, and double fields. */
- if (exp instanceof Byte
- || exp instanceof Short
- || exp instanceof Integer) {
- suffix = "L";
- val = ((Number)exp).intValue();
- }
- else if (exp instanceof Long) {
- // Visual C++ supports the i64 suffix, not LL
- suffix = isWindows ? "i64" : "LL";
- val = ((Long)exp).longValue();
- }
- else if (exp instanceof Float) suffix = "f";
- else if (exp instanceof Double) suffix = "";
- else if (exp instanceof Character) {
- suffix = "L";
- Character ch = (Character) exp;
- val = ((int) ch) & 0xffff;
- }
- if (suffix != null) {
- // Some compilers will generate a spurious warning
- // for the integer constants for Integer.MIN_VALUE
- // and Long.MIN_VALUE so we handle them specially.
- if ((suffix.equals("L") && (val == Integer.MIN_VALUE)) ||
- (suffix.equals("LL") && (val == Long.MIN_VALUE))) {
- res = " #undef " + cn + lineSep
- + " #define " + cn
- + " (" + (val + 1) + suffix + "-1)" + lineSep;
- } else if (suffix.equals("L") || suffix.endsWith("LL")) {
- res = " #undef " + cn + lineSep
- + " #define " + cn + " " + val + suffix + lineSep;
- } else {
- res = " #undef " + cn + lineSep
- + " #define " + cn + " " + exp + suffix + lineSep;
- }
- }
- }
- return res;
- }
-
- protected void methodSectionForClass(PrintWriter pw,
- TypeElement clazz, String cname)
- throws TypeSignature.SignatureException, Util.Exit {
- String methods = methodDecls(clazz, cname);
-
- if (methods.length() != 0) {
- pw.println("/* Native method declarations: */" + lineSep);
- pw.println("#ifdef __cplusplus");
- pw.println("extern \"C\" {");
- pw.println("#endif" + lineSep);
- pw.println(methods);
- pw.println("#ifdef __cplusplus");
- pw.println("}");
- pw.println("#endif");
- }
- }
-
- protected String methodDecls(TypeElement clazz, String cname)
- throws TypeSignature.SignatureException, Util.Exit {
-
- String res = "";
- for (ExecutableElement method: methods) {
- if (method.getModifiers().contains(Modifier.NATIVE))
- res = res + methodDecl(method, clazz, cname);
- }
- return res;
- }
-
- protected String methodDecl(ExecutableElement method,
- TypeElement clazz, String cname)
- throws TypeSignature.SignatureException, Util.Exit {
- String res = null;
-
- TypeMirror retType = types.erasure(method.getReturnType());
- String typesig = signature(method);
- TypeSignature newTypeSig = new TypeSignature(elems);
- String sig = newTypeSig.getTypeSignature(typesig, retType);
- boolean longName = needLongName(method, clazz);
-
- if (sig.charAt(0) != '(')
- util.error("invalid.method.signature", sig);
-
-
- res = "JNIEXPORT " + jniType(retType) + " JNICALL" + lineSep + jniMethodName(method, cname, longName)
- + "(JNIEnv *, " + cRcvrDecl(method, cname);
- List<? extends VariableElement> params = method.getParameters();
- List<TypeMirror> argTypes = new ArrayList<>();
- for (VariableElement p: params){
- argTypes.add(types.erasure(p.asType()));
- }
-
- /* It would have been nice to include the argument names in the
- declaration, but there seems to be a bug in the "BinaryField"
- class, causing the getArguments() method to return "null" for
- most (non-constructor) methods. */
- for (TypeMirror argType: argTypes)
- res = res + ", " + jniType(argType);
- res = res + ");" + lineSep;
- return res;
- }
-
- protected final boolean needLongName(ExecutableElement method,
- TypeElement clazz) {
- Name methodName = method.getSimpleName();
- for (ExecutableElement memberMethod: methods) {
- if ((memberMethod != method) &&
- memberMethod.getModifiers().contains(Modifier.NATIVE) &&
- (methodName.equals(memberMethod.getSimpleName())))
- return true;
- }
- return false;
- }
-
- protected final String jniMethodName(ExecutableElement method, String cname,
- boolean longName)
- throws TypeSignature.SignatureException {
- String res = "Java_" + cname + "_" + method.getSimpleName();
-
- if (longName) {
- TypeMirror mType = types.erasure(method.getReturnType());
- List<? extends VariableElement> params = method.getParameters();
- List<TypeMirror> argTypes = new ArrayList<>();
- for (VariableElement param: params) {
- argTypes.add(types.erasure(param.asType()));
- }
-
- res = res + "__";
- for (TypeMirror t: argTypes) {
- String tname = t.toString();
- TypeSignature newTypeSig = new TypeSignature(elems);
- String sig = newTypeSig.getTypeSignature(tname);
- res = res + nameToIdentifier(sig);
- }
- }
- return res;
- }
-
- // copied from JNI.java
- protected final String jniType(TypeMirror t) throws Util.Exit {
- TypeElement throwable = elems.getTypeElement("java.lang.Throwable");
- TypeElement jClass = elems.getTypeElement("java.lang.Class");
- TypeElement jString = elems.getTypeElement("java.lang.String");
- Element tclassDoc = types.asElement(t);
-
- switch (t.getKind()) {
- case ARRAY: {
- TypeMirror ct = ((ArrayType) t).getComponentType();
- switch (ct.getKind()) {
- case BOOLEAN: return "jbooleanArray";
- case BYTE: return "jbyteArray";
- case CHAR: return "jcharArray";
- case SHORT: return "jshortArray";
- case INT: return "jintArray";
- case LONG: return "jlongArray";
- case FLOAT: return "jfloatArray";
- case DOUBLE: return "jdoubleArray";
- case ARRAY:
- case DECLARED: return "jobjectArray";
- default: throw new Error(ct.toString());
- }
- }
-
- case VOID: return "void";
- case BOOLEAN: return "jboolean";
- case BYTE: return "jbyte";
- case CHAR: return "jchar";
- case SHORT: return "jshort";
- case INT: return "jint";
- case LONG: return "jlong";
- case FLOAT: return "jfloat";
- case DOUBLE: return "jdouble";
-
- case DECLARED: {
- if (tclassDoc.equals(jString))
- return "jstring";
- else if (types.isAssignable(t, throwable.asType()))
- return "jthrowable";
- else if (types.isAssignable(t, jClass.asType()))
- return "jclass";
- else
- return "jobject";
- }
- }
-
- util.bug("jni.unknown.type");
- return null; /* dead code. */
- }
-
- protected String llniType(TypeMirror t, boolean handleize, boolean longDoubleOK) {
- String res = null;
-
- switch (t.getKind()) {
- case ARRAY: {
- TypeMirror ct = ((ArrayType) t).getComponentType();
- switch (ct.getKind()) {
- case BOOLEAN: res = "IArrayOfBoolean"; break;
- case BYTE: res = "IArrayOfByte"; break;
- case CHAR: res = "IArrayOfChar"; break;
- case SHORT: res = "IArrayOfShort"; break;
- case INT: res = "IArrayOfInt"; break;
- case LONG: res = "IArrayOfLong"; break;
- case FLOAT: res = "IArrayOfFloat"; break;
- case DOUBLE: res = "IArrayOfDouble"; break;
- case ARRAY:
- case DECLARED: res = "IArrayOfRef"; break;
- default: throw new Error(ct.getKind() + " " + ct);
- }
- if (!handleize) res = "DEREFERENCED_" + res;
- break;
- }
-
- case VOID:
- res = "void";
- break;
-
- case BOOLEAN:
- case BYTE:
- case CHAR:
- case SHORT:
- case INT:
- res = "java_int" ;
- break;
-
- case LONG:
- res = longDoubleOK ? "java_long" : "val32 /* java_long */";
- break;
-
- case FLOAT:
- res = "java_float";
- break;
-
- case DOUBLE:
- res = longDoubleOK ? "java_double" : "val32 /* java_double */";
- break;
-
- case DECLARED:
- TypeElement e = (TypeElement) types.asElement(t);
- res = "I" + mangleClassName(e.getQualifiedName().toString());
- if (!handleize) res = "DEREFERENCED_" + res;
- break;
-
- default:
- throw new Error(t.getKind() + " " + t); // FIXME
- }
-
- return res;
- }
-
- protected final String cRcvrDecl(Element field, String cname) {
- return (field.getModifiers().contains(Modifier.STATIC) ? "jclass" : "jobject");
- }
-
- protected String maskName(String s) {
- return "LLNI_mask(" + s + ")";
- }
-
- protected String llniFieldName(VariableElement field) {
- return maskName(field.getSimpleName().toString());
- }
-
- protected final boolean isLongOrDouble(TypeMirror t) {
- TypeVisitor<Boolean,Void> v = new SimpleTypeVisitor9<Boolean,Void>() {
- @DefinedBy(Api.LANGUAGE_MODEL)
- public Boolean defaultAction(TypeMirror t, Void p){
- return false;
- }
- @DefinedBy(Api.LANGUAGE_MODEL)
- public Boolean visitArray(ArrayType t, Void p) {
- return visit(t.getComponentType(), p);
- }
- @DefinedBy(Api.LANGUAGE_MODEL)
- public Boolean visitPrimitive(PrimitiveType t, Void p) {
- TypeKind tk = t.getKind();
- return (tk == TypeKind.LONG || tk == TypeKind.DOUBLE);
- }
- };
- return v.visit(t, null);
- }
-
- /* Do unicode to ansi C identifier conversion.
- %%% This may not be right, but should be called more often. */
- protected final String nameToIdentifier(String name) {
- int len = name.length();
- StringBuilder buf = new StringBuilder(len);
- for (int i = 0; i < len; i++) {
- char c = name.charAt(i);
- if (isASCIILetterOrDigit(c))
- buf.append(c);
- else if (c == '/')
- buf.append('_');
- else if (c == '.')
- buf.append('_');
- else if (c == '_')
- buf.append("_1");
- else if (c == ';')
- buf.append("_2");
- else if (c == '[')
- buf.append("_3");
- else
- buf.append("_0" + ((int)c));
- }
- return new String(buf);
- }
-
- protected final boolean isASCIILetterOrDigit(char c) {
- if (((c >= 'A') && (c <= 'Z')) ||
- ((c >= 'a') && (c <= 'z')) ||
- ((c >= '0') && (c <= '9')))
- return true;
- else
- return false;
- }
-}
-
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/Main.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2007, 2008, 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.javah;
-
-import java.io.PrintWriter;
-
-/**
- * Main entry point.
- *
- * <p><b>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.</b>
- */
-public class Main {
- /**
- * Main entry point for the launcher.
- * Note: This method calls System.exit.
- * @param args command line arguments
- */
- public static void main(String[] args) {
- JavahTask t = new JavahTask();
- int rc = t.run(args);
- System.exit(rc);
- }
-
- /**
- * Entry point that does <i>not</i> call System.exit.
- * @param args command line arguments
- * @param out output stream
- * @return an exit code. 0 means success, non-zero means an error occurred.
- */
- public static int run(String[] args, PrintWriter out) {
- JavahTask t = new JavahTask();
- t.setLog(out);
- return t.run(args);
- }
-}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/Mangle.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,189 +0,0 @@
-/*
- * Copyright (c) 2002, 2012, 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.javah;
-
-import javax.lang.model.element.ExecutableElement;
-import javax.lang.model.element.TypeElement;
-import javax.lang.model.element.VariableElement;
-import javax.lang.model.util.Elements;
-import javax.lang.model.util.Types;
-
-/**
- * A utility for mangling java identifiers into C names. Should make
- * this more fine grained and distribute the functionality to the
- * generators.
- *
- * <p><b>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.</b></p>
- *
- * @author Sucheta Dambalkar(Revised)
- */
-public class Mangle {
-
- public static class Type {
- public static final int CLASS = 1;
- public static final int FIELDSTUB = 2;
- public static final int FIELD = 3;
- public static final int JNI = 4;
- public static final int SIGNATURE = 5;
- public static final int METHOD_JDK_1 = 6;
- public static final int METHOD_JNI_SHORT = 7;
- public static final int METHOD_JNI_LONG = 8;
- }
-
- private Elements elems;
- private Types types;
-
- Mangle(Elements elems, Types types) {
- this.elems = elems;
- this.types = types;
- }
-
- public final String mangle(CharSequence name, int mtype) {
- StringBuilder result = new StringBuilder(100);
- int length = name.length();
-
- for (int i = 0; i < length; i++) {
- char ch = name.charAt(i);
- if (isalnum(ch)) {
- result.append(ch);
- } else if ((ch == '.') &&
- mtype == Mangle.Type.CLASS) {
- result.append('_');
- } else if (( ch == '$') &&
- mtype == Mangle.Type.CLASS) {
- result.append('_');
- result.append('_');
- } else if (ch == '_' && mtype == Mangle.Type.FIELDSTUB) {
- result.append('_');
- } else if (ch == '_' && mtype == Mangle.Type.CLASS) {
- result.append('_');
- } else if (mtype == Mangle.Type.JNI) {
- String esc = null;
- if (ch == '_')
- esc = "_1";
- else if (ch == '.')
- esc = "_";
- else if (ch == ';')
- esc = "_2";
- else if (ch == '[')
- esc = "_3";
- if (esc != null) {
- result.append(esc);
- } else {
- result.append(mangleChar(ch));
- }
- } else if (mtype == Mangle.Type.SIGNATURE) {
- if (isprint(ch)) {
- result.append(ch);
- } else {
- result.append(mangleChar(ch));
- }
- } else {
- result.append(mangleChar(ch));
- }
- }
-
- return result.toString();
- }
-
- public String mangleMethod(ExecutableElement method, TypeElement clazz,
- int mtype) throws TypeSignature.SignatureException {
- StringBuilder result = new StringBuilder(100);
- result.append("Java_");
-
- if (mtype == Mangle.Type.METHOD_JDK_1) {
- result.append(mangle(clazz.getQualifiedName(), Mangle.Type.CLASS));
- result.append('_');
- result.append(mangle(method.getSimpleName(),
- Mangle.Type.FIELD));
- result.append("_stub");
- return result.toString();
- }
-
- /* JNI */
- result.append(mangle(getInnerQualifiedName(clazz), Mangle.Type.JNI));
- result.append('_');
- result.append(mangle(method.getSimpleName(),
- Mangle.Type.JNI));
- if (mtype == Mangle.Type.METHOD_JNI_LONG) {
- result.append("__");
- String typesig = signature(method);
- TypeSignature newTypeSig = new TypeSignature(elems);
- String sig = newTypeSig.getTypeSignature(typesig, method.getReturnType());
- sig = sig.substring(1);
- sig = sig.substring(0, sig.lastIndexOf(')'));
- sig = sig.replace('/', '.');
- result.append(mangle(sig, Mangle.Type.JNI));
- }
-
- return result.toString();
- }
- //where
- private String getInnerQualifiedName(TypeElement clazz) {
- return elems.getBinaryName(clazz).toString();
- }
-
- public final String mangleChar(char ch) {
- String s = Integer.toHexString(ch);
- int nzeros = 5 - s.length();
- char[] result = new char[6];
- result[0] = '_';
- for (int i = 1; i <= nzeros; i++)
- result[i] = '0';
- for (int i = nzeros+1, j = 0; i < 6; i++, j++)
- result[i] = s.charAt(j);
- return new String(result);
- }
-
- // Warning: duplicated in Gen
- private String signature(ExecutableElement e) {
- StringBuilder sb = new StringBuilder();
- String sep = "(";
- for (VariableElement p: e.getParameters()) {
- sb.append(sep);
- sb.append(types.erasure(p.asType()).toString());
- sep = ",";
- }
- sb.append(")");
- return sb.toString();
- }
-
- /* Warning: Intentional ASCII operation. */
- private static boolean isalnum(char ch) {
- return ch <= 0x7f && /* quick test */
- ((ch >= 'A' && ch <= 'Z') ||
- (ch >= 'a' && ch <= 'z') ||
- (ch >= '0' && ch <= '9'));
- }
-
- /* Warning: Intentional ASCII operation. */
- private static boolean isprint(char ch) {
- return ch >= 32 && ch <= 126;
- }
-}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/NativeHeaderTool.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-/*
- * Copyright (c) 2005, 2014, 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.javah; //javax.tools;
-
-import java.io.Writer;
-import java.nio.charset.Charset;
-import java.util.Locale;
-import java.util.concurrent.Callable;
-import javax.tools.Diagnostic;
-import javax.tools.DiagnosticListener;
-import javax.tools.JavaFileManager;
-import javax.tools.JavaFileObject;
-import javax.tools.OptionChecker;
-import javax.tools.StandardJavaFileManager;
-import javax.tools.StandardLocation;
-import javax.tools.Tool;
-
-/**
- * This class is intended to be put in javax.tools.
- *
- * @see DiagnosticListener
- * @see Diagnostic
- * @see JavaFileManager
- * @since 1.7
- *
- * <p><b>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.</b>
- */
-public interface NativeHeaderTool extends Tool, OptionChecker {
-
- /**
- * Creates a future for a native header task with the given
- * components and arguments. The task might not have
- * completed as described in the NativeHeaderTask interface.
- *
- * <p>If a file manager is provided, it must be able to handle all
- * locations defined in {@link StandardLocation}.
- *
- * @param out a Writer for additional output from the task;
- * use {@code System.err} if {@code null}
- * @param fileManager a file manager; if {@code null} use the
- * task's standard filemanager
- * @param diagnosticListener a diagnostic listener; if {@code
- * null} use the compiler's default method for reporting
- * diagnostics
- * @param options task options, {@code null} means no options
- * @param classes class names for which native headers should be generated
- * @return an object representing the task to be done
- * @throws RuntimeException if an unrecoverable error
- * occurred in a user supplied component. The
- * {@linkplain Throwable#getCause() cause} will be the error in
- * user code.
- * @throws IllegalArgumentException if any of the given
- * compilation units are of other kind than
- * {@linkplain JavaFileObject.Kind#SOURCE source}
- */
- NativeHeaderTask getTask(Writer out,
- JavaFileManager fileManager,
- DiagnosticListener<? super JavaFileObject> diagnosticListener,
- Iterable<String> options,
- Iterable<String> classes);
-
- /**
- * Returns a new instance of the standard file manager implementation
- * for this tool. The file manager will use the given diagnostic
- * listener for producing any non-fatal diagnostics. Fatal errors
- * will be signalled with the appropriate exceptions.
- *
- * <p>The standard file manager will be automatically reopened if
- * it is accessed after calls to {@code flush} or {@code close}.
- * The standard file manager must be usable with other tools.
- *
- * @param diagnosticListener a diagnostic listener for non-fatal
- * diagnostics; if {@code null} use the tool's default method
- * for reporting diagnostics
- * @param locale the locale to apply when formatting diagnostics;
- * {@code null} means the {@linkplain Locale#getDefault() default locale}.
- * @param charset the character set used for decoding bytes; if
- * {@code null} use the platform default
- * @return the standard file manager
- */
- StandardJavaFileManager getStandardFileManager(
- DiagnosticListener<? super JavaFileObject> diagnosticListener,
- Locale locale,
- Charset charset);
-
- /**
- * Interface representing a future for a native header task. The
- * task has not yet started. To start the task, call
- * the {@linkplain #call call} method.
- *
- * <p>Before calling the call method, additional aspects of the
- * task can be configured, for example, by calling the
- * {@linkplain #setLocale setLocale} method.
- */
- interface NativeHeaderTask extends Callable<Boolean> {
-
- /**
- * Set the locale to be applied when formatting diagnostics and
- * other localized data.
- *
- * @param locale the locale to apply; {@code null} means apply no
- * locale
- * @throws IllegalStateException if the task has started
- */
- void setLocale(Locale locale);
-
- /**
- * Performs this native header task. The task may only
- * be performed once. Subsequent calls to this method throw
- * IllegalStateException.
- *
- * @return true if and only all the files were processed without errors;
- * false otherwise
- *
- * @throws RuntimeException if an unrecoverable error occurred
- * in a user-supplied component. The
- * {@linkplain Throwable#getCause() cause} will be the error
- * in user code.
- * @throws IllegalStateException if called more than once
- */
- Boolean call();
- }
-}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/TypeSignature.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,283 +0,0 @@
-/*
- * Copyright (c) 2002, 2014, 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.javah;
-
-import java.util.*;
-import javax.lang.model.element.Name;
-import javax.lang.model.element.TypeElement;
-import javax.lang.model.type.ArrayType;
-import javax.lang.model.type.DeclaredType;
-import javax.lang.model.type.NoType;
-import javax.lang.model.type.PrimitiveType;
-import javax.lang.model.type.TypeKind;
-import javax.lang.model.type.TypeMirror;
-import javax.lang.model.type.TypeVariable;
-import javax.lang.model.type.TypeVisitor;
-import javax.lang.model.util.Elements;
-import javax.lang.model.util.SimpleTypeVisitor9;
-
-import com.sun.tools.javac.util.DefinedBy;
-import com.sun.tools.javac.util.DefinedBy.Api;
-
-/**
- * Returns internal type signature.
- *
- * <p><b>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.</b></p>
- *
- * @author Sucheta Dambalkar
- */
-
-public class TypeSignature {
- static class SignatureException extends Exception {
- private static final long serialVersionUID = 1L;
- SignatureException(String reason) {
- super(reason);
- }
- }
-
- Elements elems;
-
- /* Signature Characters */
-
- private static final String SIG_VOID = "V";
- private static final String SIG_BOOLEAN = "Z";
- private static final String SIG_BYTE = "B";
- private static final String SIG_CHAR = "C";
- private static final String SIG_SHORT = "S";
- private static final String SIG_INT = "I";
- private static final String SIG_LONG = "J";
- private static final String SIG_FLOAT = "F";
- private static final String SIG_DOUBLE = "D";
- private static final String SIG_ARRAY = "[";
- private static final String SIG_CLASS = "L";
-
-
-
- public TypeSignature(Elements elems){
- this.elems = elems;
- }
-
- /*
- * Returns the type signature of a field according to JVM specs
- */
- public String getTypeSignature(String javasignature) throws SignatureException {
- return getParamJVMSignature(javasignature);
- }
-
- /*
- * Returns the type signature of a method according to JVM specs
- */
- public String getTypeSignature(String javasignature, TypeMirror returnType)
- throws SignatureException {
- String signature = null; //Java type signature.
- String typeSignature = null; //Internal type signature.
- List<String> params = new ArrayList<>(); //List of parameters.
- String paramsig = null; //Java parameter signature.
- String paramJVMSig = null; //Internal parameter signature.
- String returnSig = null; //Java return type signature.
- String returnJVMType = null; //Internal return type signature.
- int dimensions = 0; //Array dimension.
-
- int startIndex = -1;
- int endIndex = -1;
- StringTokenizer st = null;
- int i = 0;
-
- // Gets the actual java signature without parentheses.
- if (javasignature != null) {
- startIndex = javasignature.indexOf("(");
- endIndex = javasignature.indexOf(")");
- }
-
- if (((startIndex != -1) && (endIndex != -1))
- &&(startIndex+1 < javasignature.length())
- &&(endIndex < javasignature.length())) {
- signature = javasignature.substring(startIndex+1, endIndex);
- }
-
- // Separates parameters.
- if (signature != null) {
- if (signature.contains(",")) {
- st = new StringTokenizer(signature, ",");
- if (st != null) {
- while (st.hasMoreTokens()) {
- params.add(st.nextToken());
- }
- }
- } else {
- params.add(signature);
- }
- }
-
- /* JVM type signature. */
- typeSignature = "(";
-
- // Gets indivisual internal parameter signature.
- while (params.isEmpty() != true) {
- paramsig = params.remove(i).trim();
- paramJVMSig = getParamJVMSignature(paramsig);
- if (paramJVMSig != null) {
- typeSignature += paramJVMSig;
- }
- }
-
- typeSignature += ")";
-
- // Get internal return type signature.
-
- returnJVMType = "";
- if (returnType != null) {
- dimensions = dimensions(returnType);
- }
-
- //Gets array dimension of return type.
- while (dimensions-- > 0) {
- returnJVMType += "[";
- }
- if (returnType != null) {
- returnSig = qualifiedTypeName(returnType);
- returnJVMType += getComponentType(returnSig);
- } else {
- System.out.println("Invalid return type.");
- }
-
- typeSignature += returnJVMType;
-
- return typeSignature;
- }
-
- /*
- * Returns internal signature of a parameter.
- */
- private String getParamJVMSignature(String paramsig) throws SignatureException {
- String paramJVMSig = "";
- String componentType ="";
-
- if(paramsig != null){
-
- if(paramsig.contains("[]")) {
- // Gets array dimension.
- int endindex = paramsig.indexOf("[]");
- componentType = paramsig.substring(0, endindex);
- String dimensionString = paramsig.substring(endindex);
- if(dimensionString != null){
- while(dimensionString.contains("[]")){
- paramJVMSig += "[";
- int beginindex = dimensionString.indexOf("]") + 1;
- if(beginindex < dimensionString.length()){
- dimensionString = dimensionString.substring(beginindex);
- }else
- dimensionString = "";
- }
- }
- } else componentType = paramsig;
-
- paramJVMSig += getComponentType(componentType);
- }
- return paramJVMSig;
- }
-
- /*
- * Returns internal signature of a component.
- */
- private String getComponentType(String componentType) throws SignatureException {
-
- String JVMSig = "";
-
- if(componentType != null){
- switch (componentType) {
- case "void": JVMSig += SIG_VOID; break;
- case "boolean": JVMSig += SIG_BOOLEAN; break;
- case "byte": JVMSig += SIG_BYTE; break;
- case "char": JVMSig += SIG_CHAR; break;
- case "short": JVMSig += SIG_SHORT; break;
- case "int": JVMSig += SIG_INT; break;
- case "long": JVMSig += SIG_LONG; break;
- case "float": JVMSig += SIG_FLOAT; break;
- case "double": JVMSig += SIG_DOUBLE; break;
- default:
- if (!componentType.equals("")) {
- TypeElement classNameDoc = elems.getTypeElement(componentType);
-
- if (classNameDoc == null) {
- throw new SignatureException(componentType);
- }
- else {
- String classname = classNameDoc.getQualifiedName().toString();
- String newclassname = classname.replace('.', '/');
- JVMSig += "L";
- JVMSig += newclassname;
- JVMSig += ";";
- }
- }
- break;
- }
- }
- return JVMSig;
- }
-
- int dimensions(TypeMirror t) {
- if (t.getKind() != TypeKind.ARRAY)
- return 0;
- return 1 + dimensions(((ArrayType) t).getComponentType());
- }
-
-
- String qualifiedTypeName(TypeMirror type) {
- TypeVisitor<Name, Void> v = new SimpleTypeVisitor9<Name, Void>() {
- @Override @DefinedBy(Api.LANGUAGE_MODEL)
- public Name visitArray(ArrayType t, Void p) {
- return t.getComponentType().accept(this, p);
- }
-
- @Override @DefinedBy(Api.LANGUAGE_MODEL)
- public Name visitDeclared(DeclaredType t, Void p) {
- return ((TypeElement) t.asElement()).getQualifiedName();
- }
-
- @Override @DefinedBy(Api.LANGUAGE_MODEL)
- public Name visitPrimitive(PrimitiveType t, Void p) {
- return elems.getName(t.toString());
- }
-
- @Override @DefinedBy(Api.LANGUAGE_MODEL)
- public Name visitNoType(NoType t, Void p) {
- if (t.getKind() == TypeKind.VOID)
- return elems.getName("void");
- return defaultAction(t, p);
- }
-
- @Override @DefinedBy(Api.LANGUAGE_MODEL)
- public Name visitTypeVariable(TypeVariable t, Void p) {
- return t.getUpperBound().accept(this, p);
- }
- };
- return v.visit(type).toString();
- }
-}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/Util.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,184 +0,0 @@
-/*
- * Copyright (c) 2002, 2016, 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.javah;
-
-import java.io.PrintWriter;
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.ResourceBundle;
-import java.util.MissingResourceException;
-import javax.tools.Diagnostic;
-import javax.tools.Diagnostic.Kind;
-import javax.tools.DiagnosticListener;
-import javax.tools.JavaFileObject;
-
-import com.sun.tools.javac.util.DefinedBy;
-import com.sun.tools.javac.util.DefinedBy.Api;
-
-/**
- * Messages, verbose and error handling support.
- *
- * For errors, the failure modes are:
- * error -- User did something wrong
- * bug -- Bug has occurred in javah
- * fatal -- We can't even find resources, so bail fast, don't localize
- *
- * <p><b>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.</b></p>
- */
-public class Util {
- /** Exit is used to replace the use of System.exit in the original javah.
- */
- public static class Exit extends Error {
- private static final long serialVersionUID = 430820978114067221L;
- Exit(int exitValue) {
- this(exitValue, null);
- }
-
- Exit(int exitValue, Throwable cause) {
- super(cause);
- this.exitValue = exitValue;
- this.cause = cause;
- }
-
- Exit(Exit e) {
- this(e.exitValue, e.cause);
- }
-
- public final int exitValue;
- public final Throwable cause;
- }
-
- /*
- * Help for verbosity.
- */
- public boolean verbose = false;
-
- public PrintWriter log;
- public DiagnosticListener<? super JavaFileObject> dl;
-
- Util(PrintWriter log, DiagnosticListener<? super JavaFileObject> dl) {
- this.log = log;
- this.dl = dl;
- }
-
- public void log(String s) {
- log.println(s);
- }
-
- /*
- * Help for loading localized messages.
- */
- private ResourceBundle m;
-
- private void initMessages() throws Exit {
- try {
- m = ResourceBundle.getBundle("com.sun.tools.javah.resources.l10n");
- } catch (MissingResourceException mre) {
- fatal("Error loading resources. Please file a bug report.", mre);
- }
- }
-
- private String getText(String key, Object... args) throws Exit {
- if (m == null)
- initMessages();
- try {
- return MessageFormat.format(m.getString(key), args);
- } catch (MissingResourceException e) {
- fatal("Key " + key + " not found in resources.", e);
- }
- return null; /* dead code */
- }
-
- /*
- * Failure modes.
- */
- public void bug(String key) throws Exit {
- bug(key, null);
- }
-
- public void bug(String key, Exception e) throws Exit {
- dl.report(createDiagnostic(Diagnostic.Kind.ERROR, key));
- dl.report(createDiagnostic(Diagnostic.Kind.NOTE, "bug.report"));
- throw new Exit(11, e);
- }
-
- public void error(String key, Object... args) throws Exit {
- dl.report(createDiagnostic(Diagnostic.Kind.ERROR, key, args));
- throw new Exit(15);
- }
-
- private void fatal(String msg, Exception e) throws Exit {
- dl.report(createDiagnostic(Diagnostic.Kind.ERROR, "", msg));
- throw new Exit(10, e);
- }
-
- private Diagnostic<JavaFileObject> createDiagnostic(
- final Diagnostic.Kind kind, final String code, final Object... args) {
- return new Diagnostic<JavaFileObject>() {
- @DefinedBy(Api.COMPILER)
- public String getCode() {
- return code;
- }
- @DefinedBy(Api.COMPILER)
- public long getColumnNumber() {
- return Diagnostic.NOPOS;
- }
- @DefinedBy(Api.COMPILER)
- public long getEndPosition() {
- return Diagnostic.NOPOS;
- }
- @DefinedBy(Api.COMPILER)
- public Kind getKind() {
- return kind;
- }
- @DefinedBy(Api.COMPILER)
- public long getLineNumber() {
- return Diagnostic.NOPOS;
- }
- @DefinedBy(Api.COMPILER)
- public String getMessage(Locale locale) {
- if (code.length() == 0)
- return (String) args[0];
- return getText(code, args); // FIXME locale
- }
- @DefinedBy(Api.COMPILER)
- public long getPosition() {
- return Diagnostic.NOPOS;
- }
- @DefinedBy(Api.COMPILER)
- public JavaFileObject getSource() {
- return null;
- }
- @DefinedBy(Api.COMPILER)
- public long getStartPosition() {
- return Diagnostic.NOPOS;
- }
- };
- }
-}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/resources/l10n.properties Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-#
-# Copyright (c) 1998, 2016, 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.
-#
-
-#
-# User errors, command line errors.
-#
-cant.create.dir=\
- The directory {0} could not be create for output.
-at.args.cant.read=\
- Can''t read command line arguments from file {1}.
-at.args.file.not.found=\
- Can''t find file {0}.
-at.args.io.exception=\
- The following I/O problem was encountered when processing an @ \
- argument on the command line: {0}.
-bad.arg=\
- Bad argument: {0}
-old.jni.mixed=\
- Can''t mix options -jni and -old. Try -help.
-old.llni.mixed=\
- Can''t mix options -old and -llni. Try -help.
-old.not.supported=\
- Option -old not supported by this version of javah.
-invalid.method.signature=\
- Invalid method signature: {0}
-jni.llni.mixed=\
- Can''t mix options -jni and -llni. Try -help.
-jni.no.stubs=\
- JNI does not require stubs, please refer to the JNI documentation.
-jni.sigerror=\
- Cannot determine signature for {0}
-dir.file.mixed=\
- Can''t mix options -d and -o. Try -help.
-no.classes.specified=\
- No classes were specified on the command line. Try -help.
-no.outputfile.specified=\
- No outputfile was specified on the command line. Try -help.
-no.outputdir.specified=\
- No output directory was specified on the command line. Try -help.
-no.classpath.specified=\
- No classpath was specified on the command line. Try -help.
-no.bootclasspath.specified=\
- No bootclasspath was specified on the command line. Try -help.
-unknown.option=\
- {0} is an illegal argument\n
-tracing.not.supported=\
- Warning: Tracing is no longer supported. Instead, use\
- -verbose:jni option of the virtual machine.
-
-main.usage=\
-Usage: \n\
-\ javah [options] <classes>\n\
-where [options] include:
-
-main.opt.o=\
-\ -o <file> Output file (only one of -d or -o may be used)
-
-main.opt.d=\
-\ -d <dir> Output directory
-
-main.opt.v=\
-\ -v -verbose Enable verbose output
-
-main.opt.h=\
-\ -h --help -? Print this message
-
-main.opt.version=\
-\ -version Print version information
-
-main.opt.jni=\
-\ -jni Generate JNI-style header file (default)
-
-main.opt.force=\
-\ -force Always write output files
-
-main.opt.module_path=\
-\ --module-path <path> Path from which to load application modules
-
-main.opt.upgrade_module_path=\
-\ --upgrade_module-path <path> Path from which to load application modules
-
-main.opt.classpath=\
-\ -classpath <path> Path from which to load classes
-
-main.opt.class_path=\
-\ --class-path <path> Path from which to load classes
-
-main.opt.cp=\
-\ -cp <path> Path from which to load classes
-
-main.opt.bootclasspath=\
-\ -bootclasspath <path> Path from which to load bootstrap classes
-
-main.opt.system=\
-\ --system <jdk> Specify where to find system modules
-
-main.usage.foot=\n\
-GNU-style options may use '=' instead whitespace to separate the name of an option\n\
-from its value.\n\
-\n\
-Each class must be specified by its fully qualified names, optionally\n\
-prefixed by a module name followed by '/'. Examples:\n\
-\ java.lang.Object\n\
-\ java.base/java.io.File\n\
-
-#
-# Version string.
-#
-javah.version={0} version "{1}"
-javah.fullVersion={0} full version "{1}"
-
-#
-# These should have better diagnostics.
-#
-super.class.not.found=\
- A required super class {0} could not be found.
-class.not.found=\
- Class {0} could not be found.
-io.exception=\
- Can''t recover from an I/O error with the following message: \
- {0}.
-
-#
-# Problems in the guts of javah.
-#
-encoding.iso8859_1.not.found=\
- ISO8859_1 converter was not found for output. This is \
- probably due to an error in the installation installation.
-tried.to.define.non.static=\
- Tried to generate #define for non-static field.
-jni.unknown.type=\
- An unknown type encountered (JNI).
-unknown.array.type=\
- An unknown array type encountered when generating old style headers.
-unknown.type.for.field=\
- An unknown type encountered when generating old style headers.
-unknown.type.in.method.signature=\
- An unknown type eccountered when generating old style stubs.
-
-
-err.prefix=Error:
-err.cant.use.option.for.fm=Can't use {0} option with given file manager
-err.internal.error=Internal error: {0}
-err.ioerror=IO error: {0}
-err.missing.arg=value missing for {0}
-err.no.classes.specified=no classes specified
-err.unknown.option=unknown option: {0}
-
-#
-# miscellaneous strings
-#
-javah.misc.Deprecation=\
- \nWarning:\u0020The javah tool is planned to be removed in the next major\n\
- JDK release. The tool has been superseded by the ''-h'' option added\n\
- to javac in JDK 8. Users are recommended to migrate to using the\n\
- javac ''-h'' option; see the javac man page for more information.\n
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/resources/l10n_ja.properties Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-#
-# Copyright (c) 1998, 2016, 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.
-#
-
-#
-# User errors, command line errors.
-#
-cant.create.dir=\u51FA\u529B\u7528\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002
-at.args.cant.read=\u30D5\u30A1\u30A4\u30EB{1}\u304B\u3089\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u5F15\u6570\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3002
-at.args.file.not.found=\u30D5\u30A1\u30A4\u30EB{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
-at.args.io.exception=\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u306E@\u5F15\u6570\u306E\u51E6\u7406\u4E2D\u306B\u3001\u6B21\u306E\u5165\u51FA\u529B\u306E\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F: {0}\u3002
-bad.arg=\u7121\u52B9\u306A\u5F15\u6570: {0}
-old.jni.mixed=\u30AA\u30D7\u30B7\u30E7\u30F3-jni\u3068-old\u3092\u540C\u6642\u306B\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002-help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-old.llni.mixed=\u30AA\u30D7\u30B7\u30E7\u30F3-old\u3068-llni\u3092\u540C\u6642\u306B\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002-help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-old.not.supported=\u3053\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306Ejavah\u3067\u306F\u30AA\u30D7\u30B7\u30E7\u30F3-old\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
-invalid.method.signature=\u7121\u52B9\u306A\u30E1\u30BD\u30C3\u30C9\u30FB\u30B7\u30B0\u30CB\u30C1\u30E3: {0}
-jni.llni.mixed=\u30AA\u30D7\u30B7\u30E7\u30F3-jni\u3068-llni\u3092\u540C\u6642\u306B\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002-help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-jni.no.stubs=JNI\u306F\u30B9\u30BF\u30D6\u3092\u5FC5\u8981\u3068\u3057\u307E\u305B\u3093\u3002JNI\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-jni.sigerror={0}\u306E\u7F72\u540D\u3092\u5224\u5B9A\u3067\u304D\u307E\u305B\u3093
-dir.file.mixed=\u30AA\u30D7\u30B7\u30E7\u30F3-d\u3068-o\u3092\u540C\u6642\u306B\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002-help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-no.classes.specified=\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002-help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-no.outputfile.specified=\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u51FA\u529B\u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002-help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-no.outputdir.specified=\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u6307\u5B9A\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002-help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-no.classpath.specified=\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u30AF\u30E9\u30B9\u30D1\u30B9\u304C\u6307\u5B9A\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002-help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-no.bootclasspath.specified=\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u30D6\u30FC\u30C8\u30FB\u30AF\u30E9\u30B9\u30D1\u30B9\u304C\u6307\u5B9A\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002-help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-unknown.option={0}\u306F\u4E0D\u6B63\u306A\u5F15\u6570\u3067\u3059\n
-tracing.not.supported=\u8B66\u544A: \u30C8\u30EC\u30FC\u30B9\u306F\u73FE\u5728\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u304B\u308F\u308A\u306B\u3001Virtual Machine\u306E-verbose:jni\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-
-main.usage=\u4F7F\u7528\u65B9\u6CD5: \n javah [options] <classes>\n[options]\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002
-
-main.opt.o=\ -o <file> \u51FA\u529B\u30D5\u30A1\u30A4\u30EB(-d\u304B-o\u306E\u3069\u3061\u3089\u304B\u4E00\u65B9\u3092\u4F7F\u7528\u3059\u308B)
-
-main.opt.d=\ -d <dir> \u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA
-
-main.opt.v=\ -v -verbose \u8A73\u7D30\u306A\u51FA\u529B\u3092\u884C\u3046
-
-main.opt.h=\ -h --help -? \u3053\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3059\u308B
-
-main.opt.version=\ -version \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u8868\u793A\u3059\u308B
-
-main.opt.jni=\ -jni JNI\u5F62\u5F0F\u306E\u30D8\u30C3\u30C0\u30FC\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u751F\u6210\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8)
-
-main.opt.force=\ -force \u5E38\u306B\u51FA\u529B\u30D5\u30A1\u30A4\u30EB\u3092\u66F8\u304D\u8FBC\u3080
-
-main.opt.module_path=\ --module-path <path> \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u30ED\u30FC\u30C9\u3059\u308B\u30D1\u30B9
-
-main.opt.upgrade_module_path=\ --upgrade_module-path <path> \u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u30ED\u30FC\u30C9\u3059\u308B\u30D1\u30B9
-
-main.opt.classpath=\ -classpath <path> \u30AF\u30E9\u30B9\u3092\u30ED\u30FC\u30C9\u3059\u308B\u30D1\u30B9
-
-main.opt.class_path=\ --class-path <path> \u30AF\u30E9\u30B9\u3092\u30ED\u30FC\u30C9\u3059\u308B\u30D1\u30B9
-
-main.opt.cp=\ -cp <path> \u30AF\u30E9\u30B9\u3092\u30ED\u30FC\u30C9\u3059\u308B\u30D1\u30B9
-
-main.opt.bootclasspath=\ -bootclasspath <path> \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u3092\u30ED\u30FC\u30C9\u3059\u308B\u30D1\u30B9
-
-main.opt.system=\ --system <jdk> \u30B7\u30B9\u30C6\u30E0\u30FB\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u691C\u7D22\u3059\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B
-
-main.usage.foot=\nGNU\u30B9\u30BF\u30A4\u30EB\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u306F\u3001\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u540D\u524D\u3068\u305D\u306E\u5024\u3092\u533A\u5207\u308B\u305F\u3081\u306B\u7A7A\u767D\u3067\u306F\u306A\u304F'='\u3092\n\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002\n\n\u5404\u30AF\u30E9\u30B9\u306F\u3001\u305D\u306E\u5B8C\u5168\u4FEE\u98FE\u540D\u3067\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u3001\u30AA\u30D7\u30B7\u30E7\u30F3\u3067\u30E2\u30B8\u30E5\u30FC\u30EB\u540D\u306E\n\u63A5\u982D\u8F9E\u306B\u7D9A\u3051\u3066'/'\u3092\u6307\u5B9A\u3057\u307E\u3059\u3002\u4F8B:\n java.lang.Object\n java.base/java.io.File\n
-#
-# Version string.
-#
-javah.version={0}\u30D0\u30FC\u30B8\u30E7\u30F3"{1}"
-javah.fullVersion={0}\u30D5\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3"{1}"
-
-#
-# These should have better diagnostics.
-#
-super.class.not.found=\u8981\u6C42\u3055\u308C\u305F\u30B9\u30FC\u30D1\u30FC\u30FB\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
-class.not.found=\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002
-io.exception=\u30E1\u30C3\u30BB\u30FC\u30B8{0}\u306E\u5165\u51FA\u529B\u30A8\u30E9\u30FC\u304B\u3089\u56DE\u5FA9\u3067\u304D\u307E\u305B\u3093\u3002
-
-#
-# Problems in the guts of javah.
-#
-encoding.iso8859_1.not.found=\u51FA\u529B\u7528\u306EISO8859_1\u30B3\u30F3\u30D0\u30FC\u30BF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u306B\u30A8\u30E9\u30FC\u304C\u3042\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002
-tried.to.define.non.static=static\u3067\u306A\u3044\u30D5\u30A3\u30FC\u30EB\u30C9\u306B#define\u3092\u751F\u6210\u3057\u3088\u3046\u3068\u3057\u307E\u3057\u305F\u3002
-jni.unknown.type=\u4E0D\u660E\u306A\u578B\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F(JNI)\u3002
-unknown.array.type=\u53E4\u3044\u5F62\u5F0F\u306E\u30D8\u30C3\u30C0\u30FC\u3092\u751F\u6210\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4E0D\u660E\u306A\u914D\u5217\u306E\u578B\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002
-unknown.type.for.field=\u53E4\u3044\u5F62\u5F0F\u306E\u30D8\u30C3\u30C0\u30FC\u3092\u751F\u6210\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4E0D\u660E\u306A\u578B\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002
-unknown.type.in.method.signature=\u53E4\u3044\u5F62\u5F0F\u306E\u30B9\u30BF\u30D6\u3092\u751F\u6210\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4E0D\u660E\u306A\u578B\u304C\u691C\u51FA\u3055\u308C\u307E\u3057\u305F\u3002
-
-
-err.prefix=\u30A8\u30E9\u30FC:
-err.cant.use.option.for.fm=\u6307\u5B9A\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u30FB\u30DE\u30CD\u30FC\u30B8\u30E3\u3067{0}\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
-err.internal.error=\u5185\u90E8\u30A8\u30E9\u30FC: {0}
-err.ioerror=\u5165\u51FA\u529B\u30A8\u30E9\u30FC: {0}
-err.missing.arg={0}\u306E\u5024\u304C\u3042\u308A\u307E\u305B\u3093
-err.no.classes.specified=\u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093
-err.unknown.option=\u4E0D\u660E\u306A\u30AA\u30D7\u30B7\u30E7\u30F3: {0}
-
-#
-# miscellaneous strings
-#
-javah.misc.Deprecation=\n\u8B66\u544A: javah\u30C4\u30FC\u30EB\u306F\u6B21\u56DE\u306EJDK\u30E1\u30B8\u30E3\u30FC\u30FB\u30EA\u30EA\u30FC\u30B9\u3067\u524A\u9664\u3055\u308C\u308B\u4E88\u5B9A\u3067\u3059\u3002\n\u3053\u306E\u30C4\u30FC\u30EB\u306FJDK 8\u3067javac\u306B\u8FFD\u52A0\u3055\u308C\u305F''-h''\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u3088\u3063\u3066\u7F6E\u304D\u63DB\u3048\u3089\u308C\u307E\u3057\u305F\u3002\n\u30E6\u30FC\u30B6\u30FC\u306Fjavac ''-h''\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u4F7F\u7528\u306B\u79FB\u884C\u3059\u308B\u3053\u3068\u3092\u304A\u85A6\u3081\u3057\u307E\u3059\u3002\n\u8A73\u7D30\u306F\u3001javac man\u30DA\u30FC\u30B8\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/resources/l10n_zh_CN.properties Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-#
-# Copyright (c) 1998, 2016, 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.
-#
-
-#
-# User errors, command line errors.
-#
-cant.create.dir=\u65E0\u6CD5\u4E3A\u8F93\u51FA\u521B\u5EFA\u76EE\u5F55 {0}\u3002
-at.args.cant.read=\u65E0\u6CD5\u4ECE\u6587\u4EF6{1}\u4E2D\u8BFB\u53D6\u547D\u4EE4\u884C\u53C2\u6570\u3002
-at.args.file.not.found=\u627E\u4E0D\u5230\u6587\u4EF6{0}\u3002
-at.args.io.exception=\u5904\u7406\u547D\u4EE4\u884C\u4E2D\u7684 @ \u53C2\u6570\u65F6, \u9047\u5230\u4EE5\u4E0B I/O \u95EE\u9898: {0}\u3002
-bad.arg=\u9519\u8BEF\u53C2\u6570: {0}
-old.jni.mixed=\u4E0D\u80FD\u6DF7\u7528\u9009\u9879 -jni \u548C -old\u3002\u8BF7\u5C1D\u8BD5\u4F7F\u7528 -help\u3002
-old.llni.mixed=\u4E0D\u80FD\u6DF7\u7528\u9009\u9879 -old \u548C -llni\u3002\u8BF7\u5C1D\u8BD5\u4F7F\u7528 -help\u3002
-old.not.supported=\u6B64\u7248\u672C\u7684 javah \u4E0D\u652F\u6301\u9009\u9879 -old\u3002
-invalid.method.signature=\u65E0\u6548\u7684\u65B9\u6CD5\u7B7E\u540D: {0}
-jni.llni.mixed=\u4E0D\u80FD\u6DF7\u7528\u9009\u9879 -jni \u548C -llni\u3002\u8BF7\u5C1D\u8BD5\u4F7F\u7528 -help\u3002
-jni.no.stubs=JNI \u4E0D\u9700\u8981\u5B58\u6839, \u8BF7\u53C2\u9605 JNI \u6587\u6863\u3002
-jni.sigerror=\u65E0\u6CD5\u786E\u5B9A{0}\u7684\u7B7E\u540D
-dir.file.mixed=\u4E0D\u80FD\u6DF7\u7528\u9009\u9879 -d \u548C -o\u3002\u8BF7\u5C1D\u8BD5\u4F7F\u7528 -help\u3002
-no.classes.specified=\u672A\u5728\u547D\u4EE4\u884C\u4E2D\u6307\u5B9A\u4EFB\u4F55\u7C7B\u3002\u8BF7\u5C1D\u8BD5\u4F7F\u7528 -help\u3002
-no.outputfile.specified=\u672A\u5728\u547D\u4EE4\u884C\u4E2D\u6307\u5B9A\u4EFB\u4F55\u8F93\u51FA\u6587\u4EF6\u3002\u8BF7\u5C1D\u8BD5\u4F7F\u7528 -help\u3002
-no.outputdir.specified=\u672A\u5728\u547D\u4EE4\u884C\u4E2D\u6307\u5B9A\u4EFB\u4F55\u8F93\u51FA\u76EE\u5F55\u3002\u8BF7\u5C1D\u8BD5\u4F7F\u7528 -help\u3002
-no.classpath.specified=\u672A\u5728\u547D\u4EE4\u884C\u4E2D\u6307\u5B9A\u4EFB\u4F55\u7C7B\u8DEF\u5F84\u3002\u8BF7\u5C1D\u8BD5\u4F7F\u7528 -help\u3002
-no.bootclasspath.specified=\u672A\u5728\u547D\u4EE4\u884C\u4E2D\u6307\u5B9A\u4EFB\u4F55\u5F15\u5BFC\u7C7B\u8DEF\u5F84\u3002\u8BF7\u5C1D\u8BD5\u4F7F\u7528 -help\u3002
-unknown.option={0}\u662F\u975E\u6CD5\u53C2\u6570\n
-tracing.not.supported=\u8B66\u544A: \u4E0D\u518D\u652F\u6301\u8DDF\u8E2A\u3002\u8BF7\u4F7F\u7528\u865A\u62DF\u673A\u7684 -verbose:jni \u9009\u9879\u3002
-
-main.usage=\u7528\u6CD5: \n javah [options] <classes>\n\u5176\u4E2D, [options] \u5305\u62EC:
-
-main.opt.o=\ -o <file> \u8F93\u51FA\u6587\u4EF6 (\u53EA\u80FD\u4F7F\u7528 -d \u6216 -o \u4E4B\u4E00)
-
-main.opt.d=\ -d <dir> \u8F93\u51FA\u76EE\u5F55
-
-main.opt.v=\ -v -verbose \u542F\u7528\u8BE6\u7EC6\u8F93\u51FA
-
-main.opt.h=\ -h --help -? \u8F93\u51FA\u6B64\u6D88\u606F
-
-main.opt.version=\ -version \u8F93\u51FA\u7248\u672C\u4FE1\u606F
-
-main.opt.jni=\ -jni \u751F\u6210 JNI \u6837\u5F0F\u7684\u6807\u5934\u6587\u4EF6 (\u9ED8\u8BA4\u503C)
-
-main.opt.force=\ -force \u59CB\u7EC8\u5199\u5165\u8F93\u51FA\u6587\u4EF6
-
-main.opt.module_path=\ --module-path <\u8DEF\u5F84> \u4ECE\u4E2D\u52A0\u8F7D\u5E94\u7528\u7A0B\u5E8F\u6A21\u5757\u7684\u8DEF\u5F84
-
-main.opt.upgrade_module_path=\ --upgrade_module-path <\u8DEF\u5F84> \u4ECE\u4E2D\u52A0\u8F7D\u5E94\u7528\u7A0B\u5E8F\u6A21\u5757\u7684\u8DEF\u5F84
-
-main.opt.classpath=\ -classpath <path> \u4ECE\u4E2D\u52A0\u8F7D\u7C7B\u7684\u8DEF\u5F84
-
-main.opt.class_path=\ --class-path <\u8DEF\u5F84> \u4ECE\u4E2D\u52A0\u8F7D\u7C7B\u7684\u8DEF\u5F84
-
-main.opt.cp=\ -cp <path> \u4ECE\u4E2D\u52A0\u8F7D\u7C7B\u7684\u8DEF\u5F84
-
-main.opt.bootclasspath=\ -bootclasspath <path> \u4ECE\u4E2D\u52A0\u8F7D\u5F15\u5BFC\u7C7B\u7684\u8DEF\u5F84
-
-main.opt.system=\ --system <jdk> \u6307\u5B9A\u67E5\u627E\u7CFB\u7EDF\u6A21\u5757\u7684\u4F4D\u7F6E
-
-main.usage.foot=\nGNU \u6837\u5F0F\u7684\u9009\u9879\u53EF\u4F7F\u7528 '=' (\u800C\u975E\u7A7A\u767D) \u6765\u5206\u9694\u9009\u9879\u540D\u79F0\n\u53CA\u5176\u503C\u3002\n\n\u6BCF\u4E2A\u7C7B\u5FC5\u987B\u7531\u5176\u5168\u9650\u5B9A\u540D\u79F0\u6307\u5B9A, \n\u53EF\u4EE5\u9009\u62E9\u6027\u5730\u4F7F\u7528\u6A21\u5757\u540D\u540E\u8DDF '/' \u4F5C\u4E3A\u524D\u7F00\u3002\u793A\u4F8B:\n java.lang.Object\n java.base/java.io.File\n
-#
-# Version string.
-#
-javah.version={0}\u7248\u672C "{1}"
-javah.fullVersion={0}\u5B8C\u6574\u7248\u672C "{1}"
-
-#
-# These should have better diagnostics.
-#
-super.class.not.found=\u627E\u4E0D\u5230\u6240\u9700\u7684\u8D85\u7C7B{0}\u3002
-class.not.found=\u627E\u4E0D\u5230\u7C7B{0}\u3002
-io.exception=\u65E0\u6CD5\u4ECE I/O \u9519\u8BEF\u4E2D\u6062\u590D, \u6D88\u606F\u4E3A: {0}\u3002
-
-#
-# Problems in the guts of javah.
-#
-encoding.iso8859_1.not.found=\u627E\u4E0D\u5230\u7528\u4E8E\u8F93\u51FA\u7684 ISO8859_1 \u8F6C\u6362\u5668\u3002\u8FD9\u53EF\u80FD\u662F\u56E0\u4E3A\u5B89\u88C5\u8FC7\u7A0B\u4E2D\u51FA\u73B0\u4E86\u9519\u8BEF\u3002
-tried.to.define.non.static=\u5C1D\u8BD5\u4E3A\u975E\u9759\u6001\u5B57\u6BB5\u751F\u6210 #define\u3002
-jni.unknown.type=\u9047\u5230\u672A\u77E5\u7C7B\u578B (JNI)\u3002
-unknown.array.type=\u751F\u6210\u65E7\u6837\u5F0F\u7684\u6807\u5934\u65F6\u9047\u5230\u672A\u77E5\u7684\u6570\u7EC4\u7C7B\u578B\u3002
-unknown.type.for.field=\u751F\u6210\u65E7\u6837\u5F0F\u7684\u6807\u5934\u65F6\u9047\u5230\u672A\u77E5\u7684\u7C7B\u578B\u3002
-unknown.type.in.method.signature=\u751F\u6210\u65E7\u6837\u5F0F\u7684\u5B58\u6839\u65F6\u9047\u5230\u672A\u77E5\u7684\u7C7B\u578B\u3002
-
-
-err.prefix=\u9519\u8BEF:
-err.cant.use.option.for.fm=\u4E0D\u80FD\u5C06{0}\u9009\u9879\u4E0E\u7ED9\u5B9A\u7684\u6587\u4EF6\u7BA1\u7406\u5668\u4E00\u8D77\u4F7F\u7528
-err.internal.error=\u5185\u90E8\u9519\u8BEF: {0}
-err.ioerror=IO \u9519\u8BEF: {0}
-err.missing.arg={0}\u7F3A\u5C11\u503C
-err.no.classes.specified=\u672A\u6307\u5B9A\u7C7B
-err.unknown.option=\u672A\u77E5\u9009\u9879: {0}
-
-#
-# miscellaneous strings
-#
-javah.misc.Deprecation=\n\u8B66\u544A: \u5DF2\u8BA1\u5212\u5728\u4E0B\u4E00\u4E2A JDK \u4E3B\u53D1\u884C\u7248\u4E2D\u5220\u9664 javah\n\u5DE5\u5177\u3002\u8BE5\u5DE5\u5177\u5728 JDK 8 \u4E2D\u5DF2\u7531\u6DFB\u52A0\u5230 javac \u7684\n''-h'' \u9009\u9879\u53D6\u4EE3\u3002\u5EFA\u8BAE\u7528\u6237\u6539\u4E3A\u4F7F\u7528 javac ''-h''\n\u9009\u9879; \u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u67E5\u770B javac \u5E2E\u52A9\u9875\u3002\n
--- a/src/jdk.compiler/share/classes/com/sun/tools/javah/resources/version.properties-template Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-#
-# Copyright (c) 2005, 2010, 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.
-#
-
-jdk=$(JDK_VERSION)
-full=$(FULL_VERSION)
-release=$(RELEASE)
--- a/src/jdk.compiler/share/classes/module-info.java Wed Dec 13 14:23:34 2017 -0800
+++ b/src/jdk.compiler/share/classes/module-info.java Wed Dec 13 14:49:48 2017 -0800
@@ -26,8 +26,7 @@
/**
* Defines the implementation of the
* {@linkplain javax.tools.ToolProvider#getSystemJavaCompiler system Java compiler}
- * and its command line equivalent, <em>{@index javac javac tool}</em>,
- * as well as <em>{@index javah javah tool}</em>.
+ * and its command line equivalent, <em>{@index javac javac tool}</em>.
*
* <h2 style="font-family:'DejaVu Sans Mono', monospace; font-style:italic">javac</h2>
*
@@ -56,17 +55,9 @@
* {@code jdk.zipfs} module, must be available if the compiler is to be able
* to read JAR files.
*
- * <h2 style="font-family:'DejaVu Sans Mono', monospace; font-style:italic">javah</h2>
- *
- * <p>
- * <em>javah</em> only exists as a command line tool, and does not provide any
- * direct API. As of JDK 9, it has been deprecated.
- * Use the {@code -h} option in <em>javac</em> instead.</p>
- *
* <dl style="font-family:'DejaVu Sans', Arial, Helvetica, sans serif">
* <dt class="simpleTagLabel">Tool Guides:
- * <dd>{@extLink javac_tool_reference javac},
- * {@extLink javah_tool_reference javah}
+ * <dd>{@extLink javac_tool_reference javac}
* </dl>
*
* @provides java.util.spi.ToolProvider
--- a/test/langtools/tools/javac/T8152360/DeprecateJavahTest.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 2016, 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 8152360
- * @summary deprecate javah
- * @library /tools/lib
- * @modules jdk.compiler/com.sun.tools.javac.api
- * jdk.compiler/com.sun.tools.javac.main
- * jdk.compiler/com.sun.tools.javah
- * @build toolbox.ToolBox toolbox.JavahTask
- * @run main DeprecateJavahTest
- */
-
-import toolbox.JavahTask;
-import toolbox.Task;
-import toolbox.ToolBox;
-
-public class DeprecateJavahTest {
- public static void main(String... args) throws Exception {
- new DeprecateJavahTest().run();
- }
-
- ToolBox tb = new ToolBox();
-
- void printDeprecationWarning() throws Exception {
- String output = new JavahTask(tb)
- .options("-version")
- .run()
- .writeAll()
- .getOutput(Task.OutputKind.DIRECT);
-
- if (!output.contains(
- "Warning: The javah tool is planned to be removed in the next major\n" +
- "JDK release. The tool has been superseded by the '-h' option added\n" +
- "to javac in JDK 8. Users are recommended to migrate to using the\n" +
- "javac '-h' option; see the javac man page for more information.")) {
- throw new Exception("test failed");
- }
- }
-
- void dontPrintDeprecationWarning() throws Exception {
- String output = new JavahTask(tb)
- .options("-version", "-XDsuppress-tool-removal-message")
- .run()
- .writeAll()
- .getOutput(Task.OutputKind.DIRECT);
-
- if (!output.startsWith("javah version")) {
- throw new Exception("test failed");
- }
- }
-
- void run() throws Exception {
- printDeprecationWarning();
- dontPrintDeprecationWarning();
- }
-}
--- a/test/langtools/tools/javac/nativeHeaders/javahComparison/CompareTest.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +0,0 @@
-/*
- * Copyright (c) 2007, 2016, 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 7150368 8003412 8000407 8031545
- * @summary javac should include basic ability to generate native headers
- * @modules jdk.compiler/com.sun.tools.javah
- */
-
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-public class CompareTest {
- public static void main(String... args) throws Exception {
- new CompareTest().run();
- }
-
- void run() throws Exception {
- File srcDir = new File(System.getProperty("test.src"));
- File classesDir = new File("classes");
- classesDir.mkdirs();
- File javacHeaders = new File("headers.javac");
- javacHeaders.mkdirs();
- File javahHeaders = new File("headers.javah");
- javahHeaders.mkdirs();
-
- List<String> javacArgs = new ArrayList<String>();
- javacArgs.add("-d");
- javacArgs.add(classesDir.getPath());
- javacArgs.add("-h");
- javacArgs.add(javacHeaders.getPath());
- javacArgs.add("-XDjavah:full");
-
- for (File f: srcDir.listFiles()) {
- if (f.getName().matches("TestClass[0-9]+\\.java")) {
- sourceFileCount++;
- javacArgs.add(f.getPath());
- }
- }
-
- int rc = com.sun.tools.javac.Main.compile(javacArgs.toArray(new String[javacArgs.size()]));
- if (rc != 0)
- throw new Exception("javac failed; rc=" + rc);
-
- List<String> javahArgs = new ArrayList<String>();
- javahArgs.add("-d");
- javahArgs.add(javahHeaders.getPath());
-
- for (File f: classesDir.listFiles()) {
- if (f.getName().endsWith(".class")) {
- javahArgs.add(inferBinaryName(f));
- }
- }
-
- PrintWriter pw = new PrintWriter(System.out, true);
- rc = com.sun.tools.javah.Main.run(javahArgs.toArray(new String[javahArgs.size()]), pw);
- if (rc != 0)
- throw new Exception("javah failed; rc=" + rc);
-
- compare(javahHeaders, javacHeaders);
-
- int javahHeaderCount = javahHeaders.list().length;
- int javacHeaderCount = javacHeaders.list().length;
-
- System.out.println(sourceFileCount + " .java files found");
- System.out.println(javacHeaderCount + " .h files generated by javac");
- System.out.println(javahHeaderCount + " .h files generated by javah");
- System.out.println(compareCount + " header files compared");
-
- if (javacHeaderCount != javahHeaderCount || javacHeaderCount != compareCount)
- error("inconsistent counts");
-
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
- }
-
- String inferBinaryName(File file) {
- String name = file.getName();
- return name.substring(0, name.length() - ".class".length()).replace("$", ".");
- }
-
- /** Compare two directories.
- * @param f1 The golden directory
- * @param f2 The directory to be compared
- */
- void compare(File f1, File f2) {
- compare(f1, f2, null);
- }
-
- /** Compare two files or directories
- * @param f1 The golden directory
- * @param f2 The directory to be compared
- * @param p An optional path identifying a file within the two directories
- */
- void compare(File f1, File f2, String p) {
- File f1p = (p == null ? f1 : new File(f1, p));
- File f2p = (p == null ? f2 : new File(f2, p));
- if (f1p.isDirectory() && f2p.isDirectory()) {
- Set<String> children = new HashSet<String>();
- children.addAll(Arrays.asList(f1p.list()));
- children.addAll(Arrays.asList(f2p.list()));
- for (String c: children) {
- compare(f1, f2, new File(p, c).getPath()); // null-safe for p
- }
- }
- else if (f1p.isFile() && f2p.isFile()) {
- System.out.println("checking " + p);
- compareCount++;
- String s1 = read(f1p);
- String s2 = read(f2p);
- if (!s1.equals(s2)) {
- System.out.println("File: " + f1p + "\n" + s1);
- System.out.println("File: " + f2p + "\n" + s2);
- error("Files differ: " + f1p + " " + f2p);
- }
- }
- else if (f1p.exists() && !f2p.exists())
- error("Only in " + f1 + ": " + p);
- else if (f2p.exists() && !f1p.exists())
- error("Only in " + f2 + ": " + p);
- else
- error("Files differ: " + f1p + " " + f2p);
- }
-
- private String read(File f) {
- try {
- return new String(Files.readAllBytes(f.toPath()));
- } catch (IOException e) {
- error("error reading " + f + ": " + e);
- return "";
- }
- }
-
- private void error(String msg) {
- System.out.println(msg);
- errors++;
- }
-
- private int errors;
- private int compareCount;
- private int sourceFileCount;
-}
--- a/test/langtools/tools/javac/nativeHeaders/javahComparison/TestClass1.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,477 +0,0 @@
-/*
- * Copyright (c) 2007, 2014, 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.
- *
- * 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.
- */
-
-import java.util.List;
-
-public class TestClass1 {
- // simple types
- byte b;
- short s;
- int i;
- long l;
- float f;
- double d;
- Object o;
- String t;
- List<String> g;
-
- // constants
- static final byte bc = 0;
- static final short sc = 0;
- static final int ic = 0;
- static final long lc = 0;
- static final float fc = 0;
- static final double dc = 0;
- static final Object oc = null;
- static final String tc = "";
- static final List<String> gc = null;
-
- // simple arrays
- byte[] ba;
- short[] sa; // not handled corrected by javah v6
- int[] ia;
- long[] la;
- float[] fa;
- double[] da;
- Object[] oa;
- String[] ta;
- List<String>[] ga;
-
- // multidimensional arrays
- byte[][] baa;
- short[][] saa;
- int[][] iaa;
- long[][] laa;
- float[][] faa;
- double[][] daa;
- Object[][] oaa;
- String[][] taa;
- List<String>[] gaa;
-
- // simple Java methods
- byte bm() { return 0; }
- short sm() { return 0; }
- int im() { return 0; }
- long lm() { return 0; }
- float fm() { return 0; }
- double dm() { return 0; }
- Object om() { return null; }
- String tm() { return ""; }
- List<String> gm() { return null; }
- void vm() { }
- byte[] bam() { return null; }
- short[] sam() { return null; }
- int[] iam() { return null; }
- long[] lam() { return null; }
- float[] fam() { return null; }
- double[] dam() { return null; }
- Object[] oam() { return null; }
- String[] tam() { return null; }
- List<String>[] gam() { return null; }
- byte[][] baam() { return null; }
- short[][] saam() { return null; }
- int[][] iaam() { return null; }
- long[][] laam() { return null; }
- float[][] faam() { return null; }
- double[][] daam() { return null; }
- Object[][] oaam() { return null; }
- String[][] taam() { return null; }
- List<String>[] gaam() { return null; }
-
- // simple native methods
- native byte bmn();
- native short smn();
- native int imn();
- native long lmn();
- native float fmn();
- native double dmn();
- native Object omn();
- native String tmn();
- native List<String> gmn();
- native void vmn();
- native byte[] bamn();
- native short[] samn();
- native int[] iamn();
- native long[] lamn();
- native float[] famn();
- native double[] damn();
- native Object[] oamn();
- native String[] tamn();
- native List<String>[] gamn();
- native byte[][] baamn();
- native short[][] saamn();
- native int[][] iaamn();
- native long[][] laamn();
- native float[][] faamn();
- native double[][] daamn();
- native Object[][] oaamn();
- native String[][] taamn();
- native List<String>[] gaamn();
-
- // overloaded Java methods
- byte bmo() { return 0; }
- short smo() { return 0; }
- int imo() { return 0; }
- long lmo() { return 0; }
- float fmo() { return 0; }
- double dmo() { return 0; }
- Object omo() { return null; }
- String tmo() { return ""; }
- List<String> gmo() { return null; }
- void vmo() { }
-
- byte bmo(int i) { return 0; }
- short smo(int i) { return 0; }
- int imo(int i) { return 0; }
- long lmo(int i) { return 0; }
- float fmo(int i) { return 0; }
- double dmo(int i) { return 0; }
- Object omo(int i) { return null; }
- String tmo(int i) { return ""; }
- List<String> gmo(int i) { return null; }
- void vmo(int i) { }
-
- // overloaded native methods
- native byte bmno();
- native short smno();
- native int imno();
- native long lmno();
- native float fmno();
- native double dmno();
- native Object omno();
- native String tmno();
- native List<String> gmno();
- native void vmno();
- native Inner1 icmno();
-
- native byte bmno(int i);
- native short smno(int i);
- native int imno(int i);
- native long lmno(int i);
- native float fmno(int i);
- native double dmno(int i);
- native Object omno(int i);
- native String tmno(int i);
- native List<String> gmno(int i);
- native void vmno(int i);
- native Inner1 icmno(Inner1 in1);
-
- // arg types for Java methods
- void mb(byte b) { }
- void ms(short s) { }
- void mi(int i) { }
- void ml(long l) { }
- void mf(float f) { }
- void md(double d) { }
- void mo(Object o) { }
- void mt(String t) { }
- void mg(List<String> g) { }
-
- // arg types for native methods
- native void mbn(byte b);
- native void msn(short s);
- native void min(int i);
- native void mln(long l);
- native void mfn(float f);
- native void mdn(double d);
- native void mon(Object o);
- native void mtn(String t);
- native void mgn(List<String> g);
-
- static class Inner1 {
- // simple types
- byte b;
- short s;
- int i;
- long l;
- float f;
- double d;
- Object o;
- String t;
- List<String> g;
-
- // constants
- static final byte bc = 0;
- static final short sc = 0;
- static final int ic = 0;
- static final long lc = 0;
- static final float fc = 0;
- static final double dc = 0;
- static final Object oc = null;
- static final String tc = "";
- static final List<String> gc = null;
-
- // simple arrays
- byte[] ba;
- // short[] sa; // not handled corrected by javah v6
- int[] ia;
- long[] la;
- float[] fa;
- double[] da;
- Object[] oa;
- String[] ta;
- List<String>[] ga;
-
- // multidimensional arrays
- byte[][] baa;
- short[][] saa;
- int[][] iaa;
- long[][] laa;
- float[][] faa;
- double[][] daa;
- Object[][] oaa;
- String[][] taa;
- List<String>[] gaa;
-
- // simple Java methods
- byte bm() { return 0; }
- short sm() { return 0; }
- int im() { return 0; }
- long lm() { return 0; }
- float fm() { return 0; }
- double dm() { return 0; }
- Object om() { return null; }
- String tm() { return ""; }
- List<String> gm() { return null; }
- void vm() { }
-
- // simple native methods
- native byte bmn();
- native short smn();
- native int imn();
- native long lmn();
- native float fmn();
- native double dmn();
- native Object omn();
- native String tmn();
- native List<String> gmn();
- native void vmn();
-
- // overloaded Java methods
- byte bmo() { return 0; }
- short smo() { return 0; }
- int imo() { return 0; }
- long lmo() { return 0; }
- float fmo() { return 0; }
- double dmo() { return 0; }
- Object omo() { return null; }
- String tmo() { return ""; }
- List<String> gmo() { return null; }
- void vmo() { }
-
- byte bmo(int i) { return 0; }
- short smo(int i) { return 0; }
- int imo(int i) { return 0; }
- long lmo(int i) { return 0; }
- float fmo(int i) { return 0; }
- double dmo(int i) { return 0; }
- Object omo(int i) { return null; }
- String tmo(int i) { return ""; }
- List<String> gmo(int i) { return null; }
- void vmo(int i) { }
-
- // overloaded native methods
- native byte bmno();
- native short smno();
- native int imno();
- native long lmno();
- native float fmno();
- native double dmno();
- native Object omno();
- native String tmno();
- native List<String> gmno();
- native void vmno();
-
- native byte bmno(int i);
- native short smno(int i);
- native int imno(int i);
- native long lmno(int i);
- native float fmno(int i);
- native double dmno(int i);
- native Object omno(int i);
- native String tmno(int i);
- native List<String> gmno(int i);
- native void vmno(int i);
-
- // arg types for Java methods
- void mb(byte b) { }
- void ms(short s) { }
- void mi(int i) { }
- void ml(long l) { }
- void mf(float f) { }
- void md(double d) { }
- void mo(Object o) { }
- void mt(String t) { }
- void mg(List<String> g) { }
-
- // arg types for native methods
- native void mbn(byte b);
- native void msn(short s);
- native void min(int i);
- native void mln(long l);
- native void mfn(float f);
- native void mdn(double d);
- native void mon(Object o);
- native void mtn(String t);
- native void mgn(List<String> g);
- }
-
- class Inner2 {
- // simple types
- byte b;
- short s;
- int i;
- long l;
- float f;
- double d;
- Object o;
- String t;
- List<String> g;
-
- // constants
- static final byte bc = 0;
- static final short sc = 0;
- static final int ic = 0;
- static final long lc = 0;
- static final float fc = 0;
- static final double dc = 0;
- //static final Object oc = null;
- static final String tc = "";
- //static final List<String> gc = null;
-
- // simple arrays
- byte[] ba;
- // short[] sa; // not handled corrected by javah v6
- int[] ia;
- long[] la;
- float[] fa;
- double[] da;
- Object[] oa;
- String[] ta;
- List<String>[] ga;
-
- // multidimensional arrays
- byte[][] baa;
- short[][] saa;
- int[][] iaa;
- long[][] laa;
- float[][] faa;
- double[][] daa;
- Object[][] oaa;
- String[][] taa;
- List<String>[] gaa;
-
- // simple Java methods
- byte bm() { return 0; }
- short sm() { return 0; }
- int im() { return 0; }
- long lm() { return 0; }
- float fm() { return 0; }
- double dm() { return 0; }
- Object om() { return null; }
- String tm() { return ""; }
- List<String> gm() { return null; }
- void vm() { }
-
- // simple native methods
- native byte bmn();
- native short smn();
- native int imn();
- native long lmn();
- native float fmn();
- native double dmn();
- native Object omn();
- native String tmn();
- native List<String> gmn();
- native void vmn();
-
- // overloaded Java methods
- byte bm1() { return 0; }
- short sm1() { return 0; }
- int im1() { return 0; }
- long lm1() { return 0; }
- float fm1() { return 0; }
- double dm1() { return 0; }
- Object om1() { return null; }
- String tm1() { return ""; }
- List<String> gm1() { return null; }
- void vm1() { }
-
- byte bm2(int i) { return 0; }
- short sm2(int i) { return 0; }
- int im2(int i) { return 0; }
- long lm2(int i) { return 0; }
- float fm2(int i) { return 0; }
- double dm2(int i) { return 0; }
- Object om2(int i) { return null; }
- String tm2(int i) { return ""; }
- List<String> gm2(int i) { return null; }
- void vm2(int i) { }
-
- // overloaded native methods
- native byte bmn1();
- native short smn1();
- native int imn1();
- native long lmn1();
- native float fmn1();
- native double dmn1();
- native Object omn1();
- native String tmn1();
- native List<String> gmn1();
- native void vmn1();
-
- native byte bmn2(int i);
- native short smn2(int i);
- native int imn2(int i);
- native long lmn2(int i);
- native float fmn2(int i);
- native double dmn2(int i);
- native Object omn2(int i);
- native String tmn2(int i);
- native List<String> gmn2(int i);
- native void vmn2(int i);
-
- // arg types for Java methods
- void mb(byte b) { }
- void ms(short s) { }
- void mi(int i) { }
- void ml(long l) { }
- void mf(float f) { }
- void md(double d) { }
- void mo(Object o) { }
- void mt(String t) { }
- void mg(List<String> g) { }
-
- // arg types for native methods
- native void mbn(byte b);
- native void msn(short s);
- native void min(int i);
- native void mln(long l);
- native void mfn(float f);
- native void mdn(double d);
- native void mon(Object o);
- native void mtn(String t);
- native void mgn(List<String> g);
- }
-
-}
--- a/test/langtools/tools/javac/nativeHeaders/javahComparison/TestClass4.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2007, 2012, 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.
- *
- * 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.
- */
-
-import java.lang.annotation.Native;
-
-public class TestClass4 {
- @Native
- public static final byte b = 1;
-
- @Native
- public static final short s = 2;
-
- @Native
- public static final int i = 3;
-
- @Native
- public static final long l = 4;
-
- @Native
- public static final float f = 5.0f;
-
- @Native
- public static final double d = 6.0;
-
- @Native
- public static final Object o = null;
-
- @Native
- public static final String t = "8";
-}
--- a/test/langtools/tools/javac/nativeHeaders/javahComparison/TestClass5.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2007, 2012, 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.
- *
- * 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.
- */
-
-import java.lang.annotation.Native;
-
-public class TestClass5 {
- @Native
- public static final int tc5 = 1;
-
- public class Inner1 {
- @Native
- public static final int tc5i1 = 2;
-
- public class Inner1A {
- @Native
- public static final int tc5i1i1a = 3;
- }
-
- public class Inner1B {
- @Native
- public static final int tc5i1i1b = 4;
- }
- }
-
- public class Inner2 {
- @Native
- public static final int tc521 = 5;
-
- public class Inner2A {
- @Native
- public static final int tc5i2i2a = 6;
- }
-
- public class Inner2B {
- @Native
- public static final int tc5i2i2b = 7;
- }
- }
-}
-
--- a/test/langtools/tools/javah/4942232/ParamClassTest.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2010, 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.
- *
- * 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.
- */
-
-public class ParamClassTest {
- static {
- System.loadLibrary("Test");
- }
-
- public native void method(Param s);
-
- public static void main(String[] a) {
- }
-}
-
-class Param {
-}
--- a/test/langtools/tools/javah/4942232/Test.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-/*
- * Copyright (c) 2010, 2016, 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 4942232
- * @summary missing param class processes without error
- * @modules jdk.compiler/com.sun.tools.javah
- * @build ParamClassTest Test
- * @run main Test
- */
-
-import java.io.*;
-import java.util.*;
-
-public class Test {
- public static void main(String... args) throws Exception {
- new Test().run();
- }
-
- void run() throws Exception {
- File testSrc = new File(System.getProperty("test.src"));
- File testClasses = new File(System.getProperty("test.classes"));
-
- // standard use of javah on valid class file
- String[] test1Args = {
- "-d", mkdir("test1/out").getPath(),
- "-classpath", testClasses.getPath(),
- "ParamClassTest"
- };
- test(test1Args, 0);
-
- // extended use of javah on valid source file
- String[] test2Args = {
- "-d", mkdir("test2/out").getPath(),
- "-classpath", testSrc.getPath(),
- "ParamClassTest"
- };
- test(test2Args, 0);
-
- // javah on class file with missing referents
- File test3Classes = mkdir("test3/classes");
- copy(new File(testClasses, "ParamClassTest.class"), test3Classes);
- String[] test3Args = {
- "-d", mkdir("test3/out").getPath(),
- "-classpath", test3Classes.getPath(),
- "ParamClassTest"
- };
- test(test3Args, 1);
-
- // javah on source file with missing referents
- File test4Src = mkdir("test4/src");
- String paramClassTestSrc = readFile(new File(testSrc, "ParamClassTest.java"));
- writeFile(new File(test4Src, "ParamClassTest.java"),
- paramClassTestSrc.replaceAll("class Param \\{\\s+\\}", ""));
- String[] test4Args = {
- "-d", mkdir("test4/out").getPath(),
- "-classpath", test4Src.getPath(),
- "ParamClassTest"
- };
- test(test4Args, 15);
-
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
- }
-
- void test(String[] args, int expect) {
- System.err.println("test: " + Arrays.asList(args));
- int rc = javah(args);
- if (rc != expect)
- error("Unexpected return code: " + rc + "; expected: " + expect);
- }
-
- int javah(String... args) {
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- int rc = com.sun.tools.javah.Main.run(args, pw);
- pw.close();
- String out = sw.toString();
- if (!out.isEmpty())
- System.err.println(out);
- return rc;
- }
-
- File mkdir(String path) {
- File f = new File(path);
- f.mkdirs();
- return f;
- }
-
- void copy(File from, File to) throws IOException {
- if (to.isDirectory())
- to = new File(to, from.getName());
- try (DataInputStream in = new DataInputStream(new FileInputStream(from));
- FileOutputStream out = new FileOutputStream(to)) {
- byte[] buf = new byte[(int) from.length()];
- in.readFully(buf);
- out.write(buf);
- }
- }
-
- String readFile(File f) throws IOException {
- try (DataInputStream in = new DataInputStream(new FileInputStream(f))) {
- byte[] buf = new byte[(int) f.length()];
- in.readFully(buf);
- return new String(buf);
- }
- }
-
- void writeFile(File f, String body) throws IOException {
- try (FileWriter out = new FileWriter(f)) {
- out.write(body);
- }
- }
-
- void error(String msg) {
- System.err.println(msg);
- errors++;
- }
-
- int errors;
-}
--- a/test/langtools/tools/javah/6257087/T6257087.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 2013, 2016, 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 6257087
- * @summary javah doesn't produce proper signatures for inner class native methods
- * @library /tools/lib
- * @modules jdk.compiler/com.sun.tools.javac.api
- * jdk.compiler/com.sun.tools.javac.main
- * jdk.compiler/com.sun.tools.javah
- * @build toolbox.ToolBox toolbox.JavahTask
- * @run main T6257087
- */
-
-import java.util.List;
-
-import toolbox.JavahTask;
-import toolbox.ToolBox;
-
-public class T6257087 {
-
- private static final String fooBarGoldenFile =
- "/* DO NOT EDIT THIS FILE - it is machine generated */\n" +
- "#include <jni.h>\n" +
- "/* Header for class foo_bar */\n" +
- "\n" +
- "#ifndef _Included_foo_bar\n" +
- "#define _Included_foo_bar\n" +
- "#ifdef __cplusplus\n" +
- "extern \"C\" {\n" +
- "#endif\n" +
- "/*\n" +
- " * Class: foo_bar\n" +
- " * Method: aardvark\n" +
- " * Signature: ()V\n" +
- " */\n" +
- "JNIEXPORT void JNICALL Java_foo_00024bar_aardvark\n" +
- " (JNIEnv *, jobject);\n" +
- "\n" +
- "#ifdef __cplusplus\n" +
- "}\n" +
- "#endif\n" +
- "#endif";
-
- public static void main(String[] args) throws Exception {
- ToolBox tb = new ToolBox();
- new JavahTask(tb)
- .classpath(ToolBox.testClasses)
- .classes("foo")
- .run();
-
- List<String> fooBarFile = tb.readAllLines("foo_bar.h");
- tb.checkEqual(fooBarFile, tb.split(fooBarGoldenFile, "\n"));
- }
-
-}
-
-class foo {
- class bar {
- public native void aardvark();
- }
-}
--- a/test/langtools/tools/javah/6572945/T6572945.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,240 +0,0 @@
-/*
- * Copyright (c) 2007, 2016, 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 6572945
- * @summary rewrite javah as an annotation processor, instead of as a doclet
- * @modules jdk.compiler/com.sun.tools.javah
- * @build TestClass1 TestClass2 TestClass3
- * @run main T6572945
- */
-
-import java.io.*;
-import java.util.*;
-import com.sun.tools.javah.Main;
-
-public class T6572945
-{
- static File testSrc = new File(System.getProperty("test.src", "."));
- static File testClasses = new File(System.getProperty("test.classes", "."));
- static boolean isWindows = System.getProperty("os.name").startsWith("Windows");
-
- public static void main(String... args)
- throws IOException, InterruptedException
- {
- boolean ok = new T6572945().run(args);
- if (!ok)
- throw new Error("Test Failed");
- }
-
- public boolean run(String[] args)
- throws IOException, InterruptedException
- {
- if (args.length == 1)
- jdk = new File(args[0]);
-
- test("-o", "jni.file.1", "-jni", "TestClass1");
- test("-o", "jni.file.2", "-jni", "TestClass1", "TestClass2");
- test("-d", "jni.dir.1", "-jni", "TestClass1", "TestClass2");
- test("-o", "jni.file.3", "-jni", "TestClass3");
-
- // The following tests are disabled because llni support has been
- // discontinued, and because bugs in old javah means that character
- // for character testing against output from old javah does not work.
- // In fact, the LLNI impl in new javah is actually better than the
- // impl in old javah because of a couple of significant bug fixes.
-
-// test("-o", "llni.file.1", "-llni", "TestClass1");
-// test("-o", "llni.file.2", "-llni", "TestClass1", "TestClass2");
-// test("-d", "llni.dir.1", "-llni", "TestClass1", "TestClass2");
-// test("-o", "llni.file.3", "-llni", "TestClass3");
-
- return (errors == 0);
- }
-
- void test(String... args)
- throws IOException, InterruptedException
- {
- String[] cp_args = new String[args.length + 2];
- cp_args[0] = "-classpath";
- cp_args[1] = testClasses.getPath();
- System.arraycopy(args, 0, cp_args, 2, args.length);
-
- if (jdk != null)
- init(cp_args);
-
- File out = null;
- for (int i = 0; i < args.length; i++) {
- if (args[i].equals("-o")) {
- out = new File(args[++i]);
- break;
- } else if (args[i].equals("-d")) {
- out = new File(args[++i]);
- out.mkdirs();
- break;
- }
- }
-
- try {
- System.out.println("test: " + Arrays.asList(cp_args));
-
-// // Uncomment and use the following lines to execute javah via the
-// // command line -- for example, to run old javah and set up the golden files
-// List<String> cmd = new ArrayList<String>();
-// File javaHome = new File(System.getProperty("java.home"));
-// if (javaHome.getName().equals("jre"))
-// javaHome = javaHome.getParentFile();
-// File javah = new File(new File(javaHome, "bin"), "javah");
-// cmd.add(javah.getPath());
-// cmd.addAll(Arrays.asList(cp_args));
-// ProcessBuilder pb = new ProcessBuilder(cmd);
-// pb.redirectErrorStream(true);
-// pb.start();
-// Process p = pb.start();
-// String line;
-// BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
-// while ((line = in.readLine()) != null)
-// System.err.println(line);
-// in.close();
-// int rc = p.waitFor();
-
- // Use new javah
- PrintWriter err = new PrintWriter(System.err, true);
- int rc = Main.run(cp_args, err);
-
- if (rc != 0) {
- error("javah failed: rc=" + rc);
- return;
- }
-
- // The golden files use the LL suffix for long constants, which
- // is used on Linux and Solaris. On Windows, the suffix is i64,
- // so compare will update the golden files on the fly before the
- // final comparison.
- compare(new File(new File(testSrc, "gold"), out.getName()), out);
- } catch (Throwable t) {
- t.printStackTrace();
- error("javah threw exception");
- }
- }
-
- void init(String[] args) throws IOException, InterruptedException {
- String[] cmdArgs = new String[args.length + 1];
- cmdArgs[0] = new File(new File(jdk, "bin"), "javah").getPath();
- System.arraycopy(args, 0, cmdArgs, 1, args.length);
-
- System.out.println("init: " + Arrays.asList(cmdArgs));
-
- ProcessBuilder pb = new ProcessBuilder(cmdArgs);
- pb.directory(new File(testSrc, "gold"));
- pb.redirectErrorStream(true);
- Process p = pb.start();
- BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
- String line;
- while ((line = in.readLine()) != null)
- System.out.println("javah: " + line);
- int rc = p.waitFor();
- if (rc != 0)
- error("javah: exit code " + rc);
- }
-
- /** Compare two directories.
- * @param f1 The golden directory
- * @param f2 The directory to be compared
- */
- void compare(File f1, File f2) {
- compare(f1, f2, null);
- }
-
- /** Compare two files or directories
- * @param f1 The golden directory
- * @param f2 The directory to be compared
- * @param p An optional path identifying a file within the two directories
- */
- void compare(File f1, File f2, String p) {
- File f1p = (p == null ? f1 : new File(f1, p));
- File f2p = (p == null ? f2 : new File(f2, p));
- System.out.println("compare " + f1p + " " + f2p);
- if (f1p.isDirectory() && f2p.isDirectory()) {
- Set<String> children = new HashSet<String>();
- children.addAll(Arrays.asList(f1p.list()));
- children.addAll(Arrays.asList(f2p.list()));
- for (String c: children) {
- compare(f1, f2, new File(p, c).getPath()); // null-safe for p
- }
- }
- else if (f1p.isFile() && f2p.isFile()) {
- String s1 = read(f1p);
- if (isWindows) {
- // f1/s1 is the golden file
- // on Windows, long constants use the i64 suffix, not LL
- s1 = s1.replaceAll("( [0-9]+)LL\n", "$1i64\n");
- }
- String s2 = read(f2p);
- if (!s1.equals(s2)) {
- System.out.println("File: " + f1p + "\n" + s1);
- System.out.println("File: " + f2p + "\n" + s2);
- error("Files differ: " + f1p + " " + f2p);
- }
- }
- else if (f1p.exists() && !f2p.exists())
- error("Only in " + f1 + ": " + p);
- else if (f2p.exists() && !f1p.exists())
- error("Only in " + f2 + ": " + p);
- else
- error("Files differ: " + f1p + " " + f2p);
- }
-
- private String read(File f) {
- try {
- BufferedReader in = new BufferedReader(new FileReader(f));
- try {
- StringBuilder sb = new StringBuilder((int) f.length());
- String line;
- while ((line = in.readLine()) != null) {
- sb.append(line);
- sb.append("\n");
- }
- return sb.toString();
- } finally {
- try {
- in.close();
- } catch (IOException e) {
- }
- }
- } catch (IOException e) {
- error("error reading " + f + ": " + e);
- return "";
- }
- }
-
-
- private void error(String msg) {
- System.out.println(msg);
- errors++;
- }
-
- private int errors;
- private File jdk;
-}
--- a/test/langtools/tools/javah/6572945/TestClass1.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,475 +0,0 @@
-/*
- * Copyright (c) 2007, 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.
- *
- * 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.
- */
-
-import java.util.List;
-
-public class TestClass1 {
- // simple types
- byte b;
- short s;
- int i;
- long l;
- float f;
- double d;
- Object o;
- String t;
- List<String> g;
-
- // constants
- static final byte bc = 0;
- static final short sc = 0;
- static final int ic = 0;
- static final long lc = 0;
- static final float fc = 0;
- static final double dc = 0;
- static final Object oc = null;
- static final String tc = "";
- static final List<String> gc = null;
-
- // simple arrays
- byte[] ba;
- short[] sa; // not handled corrected by javah v6
- int[] ia;
- long[] la;
- float[] fa;
- double[] da;
- Object[] oa;
- String[] ta;
- List<String>[] ga;
-
- // multidimensional arrays
- byte[][] baa;
- short[][] saa;
- int[][] iaa;
- long[][] laa;
- float[][] faa;
- double[][] daa;
- Object[][] oaa;
- String[][] taa;
- List<String>[] gaa;
-
- // simple Java methods
- byte bm() { return 0; }
- short sm() { return 0; }
- int im() { return 0; }
- long lm() { return 0; }
- float fm() { return 0; }
- double dm() { return 0; }
- Object om() { return null; }
- String tm() { return ""; }
- List<String> gm() { return null; }
- void vm() { }
- byte[] bam() { return null; }
- short[] sam() { return null; }
- int[] iam() { return null; }
- long[] lam() { return null; }
- float[] fam() { return null; }
- double[] dam() { return null; }
- Object[] oam() { return null; }
- String[] tam() { return null; }
- List<String>[] gam() { return null; }
- byte[][] baam() { return null; }
- short[][] saam() { return null; }
- int[][] iaam() { return null; }
- long[][] laam() { return null; }
- float[][] faam() { return null; }
- double[][] daam() { return null; }
- Object[][] oaam() { return null; }
- String[][] taam() { return null; }
- List<String>[] gaam() { return null; }
-
- // simple native methods
- native byte bmn();
- native short smn();
- native int imn();
- native long lmn();
- native float fmn();
- native double dmn();
- native Object omn();
- native String tmn();
- native List<String> gmn();
- native void vmn();
- native byte[] bamn();
- native short[] samn();
- native int[] iamn();
- native long[] lamn();
- native float[] famn();
- native double[] damn();
- native Object[] oamn();
- native String[] tamn();
- native List<String>[] gamn();
- native byte[][] baamn();
- native short[][] saamn();
- native int[][] iaamn();
- native long[][] laamn();
- native float[][] faamn();
- native double[][] daamn();
- native Object[][] oaamn();
- native String[][] taamn();
- native List<String>[] gaamn();
-
- // overloaded Java methods
- byte bm1() { return 0; }
- short sm1() { return 0; }
- int im1() { return 0; }
- long lm1() { return 0; }
- float fm1() { return 0; }
- double dm1() { return 0; }
- Object om1() { return null; }
- String tm1() { return ""; }
- List<String> gm1() { return null; }
- void vm1() { }
-
- byte bm2(int i) { return 0; }
- short sm2(int i) { return 0; }
- int im2(int i) { return 0; }
- long lm2(int i) { return 0; }
- float fm2(int i) { return 0; }
- double dm2(int i) { return 0; }
- Object om2(int i) { return null; }
- String tm2(int i) { return ""; }
- List<String> gm2(int i) { return null; }
- void vm2(int i) { }
-
- // overloaded native methods
- native byte bmn1();
- native short smn1();
- native int imn1();
- native long lmn1();
- native float fmn1();
- native double dmn1();
- native Object omn1();
- native String tmn1();
- native List<String> gmn1();
- native void vmn1();
-
- native byte bmn2(int i);
- native short smn2(int i);
- native int imn2(int i);
- native long lmn2(int i);
- native float fmn2(int i);
- native double dmn2(int i);
- native Object omn2(int i);
- native String tmn2(int i);
- native List<String> gmn2(int i);
- native void vmn2(int i);
-
- // arg types for Java methods
- void mb(byte b) { }
- void ms(short s) { }
- void mi(int i) { }
- void ml(long l) { }
- void mf(float f) { }
- void md(double d) { }
- void mo(Object o) { }
- void mt(String t) { }
- void mg(List<String> g) { }
-
- // arg types for native methods
- native void mbn(byte b);
- native void msn(short s);
- native void min(int i);
- native void mln(long l);
- native void mfn(float f);
- native void mdn(double d);
- native void mon(Object o);
- native void mtn(String t);
- native void mgn(List<String> g);
-
- static class Inner1 {
- // simple types
- byte b;
- short s;
- int i;
- long l;
- float f;
- double d;
- Object o;
- String t;
- List<String> g;
-
- // constants
- static final byte bc = 0;
- static final short sc = 0;
- static final int ic = 0;
- static final long lc = 0;
- static final float fc = 0;
- static final double dc = 0;
- static final Object oc = null;
- static final String tc = "";
- static final List<String> gc = null;
-
- // simple arrays
- byte[] ba;
- // short[] sa; // not handled corrected by javah v6
- int[] ia;
- long[] la;
- float[] fa;
- double[] da;
- Object[] oa;
- String[] ta;
- List<String>[] ga;
-
- // multidimensional arrays
- byte[][] baa;
- short[][] saa;
- int[][] iaa;
- long[][] laa;
- float[][] faa;
- double[][] daa;
- Object[][] oaa;
- String[][] taa;
- List<String>[] gaa;
-
- // simple Java methods
- byte bm() { return 0; }
- short sm() { return 0; }
- int im() { return 0; }
- long lm() { return 0; }
- float fm() { return 0; }
- double dm() { return 0; }
- Object om() { return null; }
- String tm() { return ""; }
- List<String> gm() { return null; }
- void vm() { }
-
- // simple native methods
- native byte bmn();
- native short smn();
- native int imn();
- native long lmn();
- native float fmn();
- native double dmn();
- native Object omn();
- native String tmn();
- native List<String> gmn();
- native void vmn();
-
- // overloaded Java methods
- byte bm1() { return 0; }
- short sm1() { return 0; }
- int im1() { return 0; }
- long lm1() { return 0; }
- float fm1() { return 0; }
- double dm1() { return 0; }
- Object om1() { return null; }
- String tm1() { return ""; }
- List<String> gm1() { return null; }
- void vm1() { }
-
- byte bm2(int i) { return 0; }
- short sm2(int i) { return 0; }
- int im2(int i) { return 0; }
- long lm2(int i) { return 0; }
- float fm2(int i) { return 0; }
- double dm2(int i) { return 0; }
- Object om2(int i) { return null; }
- String tm2(int i) { return ""; }
- List<String> gm2(int i) { return null; }
- void vm2(int i) { }
-
- // overloaded native methods
- native byte bmn1();
- native short smn1();
- native int imn1();
- native long lmn1();
- native float fmn1();
- native double dmn1();
- native Object omn1();
- native String tmn1();
- native List<String> gmn1();
- native void vmn1();
-
- native byte bmn2(int i);
- native short smn2(int i);
- native int imn2(int i);
- native long lmn2(int i);
- native float fmn2(int i);
- native double dmn2(int i);
- native Object omn2(int i);
- native String tmn2(int i);
- native List<String> gmn2(int i);
- native void vmn2(int i);
-
- // arg types for Java methods
- void mb(byte b) { }
- void ms(short s) { }
- void mi(int i) { }
- void ml(long l) { }
- void mf(float f) { }
- void md(double d) { }
- void mo(Object o) { }
- void mt(String t) { }
- void mg(List<String> g) { }
-
- // arg types for native methods
- native void mbn(byte b);
- native void msn(short s);
- native void min(int i);
- native void mln(long l);
- native void mfn(float f);
- native void mdn(double d);
- native void mon(Object o);
- native void mtn(String t);
- native void mgn(List<String> g);
- }
-
- class Inner2 {
- // simple types
- byte b;
- short s;
- int i;
- long l;
- float f;
- double d;
- Object o;
- String t;
- List<String> g;
-
- // constants
- static final byte bc = 0;
- static final short sc = 0;
- static final int ic = 0;
- static final long lc = 0;
- static final float fc = 0;
- static final double dc = 0;
- //static final Object oc = null;
- static final String tc = "";
- //static final List<String> gc = null;
-
- // simple arrays
- byte[] ba;
- // short[] sa; // not handled corrected by javah v6
- int[] ia;
- long[] la;
- float[] fa;
- double[] da;
- Object[] oa;
- String[] ta;
- List<String>[] ga;
-
- // multidimensional arrays
- byte[][] baa;
- short[][] saa;
- int[][] iaa;
- long[][] laa;
- float[][] faa;
- double[][] daa;
- Object[][] oaa;
- String[][] taa;
- List<String>[] gaa;
-
- // simple Java methods
- byte bm() { return 0; }
- short sm() { return 0; }
- int im() { return 0; }
- long lm() { return 0; }
- float fm() { return 0; }
- double dm() { return 0; }
- Object om() { return null; }
- String tm() { return ""; }
- List<String> gm() { return null; }
- void vm() { }
-
- // simple native methods
- native byte bmn();
- native short smn();
- native int imn();
- native long lmn();
- native float fmn();
- native double dmn();
- native Object omn();
- native String tmn();
- native List<String> gmn();
- native void vmn();
-
- // overloaded Java methods
- byte bm1() { return 0; }
- short sm1() { return 0; }
- int im1() { return 0; }
- long lm1() { return 0; }
- float fm1() { return 0; }
- double dm1() { return 0; }
- Object om1() { return null; }
- String tm1() { return ""; }
- List<String> gm1() { return null; }
- void vm1() { }
-
- byte bm2(int i) { return 0; }
- short sm2(int i) { return 0; }
- int im2(int i) { return 0; }
- long lm2(int i) { return 0; }
- float fm2(int i) { return 0; }
- double dm2(int i) { return 0; }
- Object om2(int i) { return null; }
- String tm2(int i) { return ""; }
- List<String> gm2(int i) { return null; }
- void vm2(int i) { }
-
- // overloaded native methods
- native byte bmn1();
- native short smn1();
- native int imn1();
- native long lmn1();
- native float fmn1();
- native double dmn1();
- native Object omn1();
- native String tmn1();
- native List<String> gmn1();
- native void vmn1();
-
- native byte bmn2(int i);
- native short smn2(int i);
- native int imn2(int i);
- native long lmn2(int i);
- native float fmn2(int i);
- native double dmn2(int i);
- native Object omn2(int i);
- native String tmn2(int i);
- native List<String> gmn2(int i);
- native void vmn2(int i);
-
- // arg types for Java methods
- void mb(byte b) { }
- void ms(short s) { }
- void mi(int i) { }
- void ml(long l) { }
- void mf(float f) { }
- void md(double d) { }
- void mo(Object o) { }
- void mt(String t) { }
- void mg(List<String> g) { }
-
- // arg types for native methods
- native void mbn(byte b);
- native void msn(short s);
- native void min(int i);
- native void mln(long l);
- native void mfn(float f);
- native void mdn(double d);
- native void mon(Object o);
- native void mtn(String t);
- native void mgn(List<String> g);
- }
-
-}
--- a/test/langtools/tools/javah/6572945/TestClass2.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2007, 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.
- *
- * 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.
- */
-
-public class TestClass2 {
- byte b;
- short s;
- int i;
- long l;
- float f;
- double d;
- Object o;
- String t;
-}
--- a/test/langtools/tools/javah/6572945/TestClass3.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2007, 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.
- *
- * 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.
- */
-
-public class TestClass3 {
- public int tc3;
-
- public class Inner1 {
- public int tc3i1;
-
- public class Inner1A {
- public int tc3i1i1a;
- }
-
- public class Inner1B {
- public int tc3i1i1b;
- }
- }
-
- public class Inner2 {
- public int tc321;
-
- public class Inner2A {
- public int tc3i2i2a;
- }
-
- public class Inner2B {
- public int tc3i2i2b;
- }
- }
-}
-
--- a/test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass1.h Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,481 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class TestClass1 */
-
-#ifndef _Included_TestClass1
-#define _Included_TestClass1
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef TestClass1_bc
-#define TestClass1_bc 0L
-#undef TestClass1_sc
-#define TestClass1_sc 0L
-#undef TestClass1_ic
-#define TestClass1_ic 0L
-#undef TestClass1_lc
-#define TestClass1_lc 0LL
-#undef TestClass1_fc
-#define TestClass1_fc 0.0f
-#undef TestClass1_dc
-#define TestClass1_dc 0.0
-/*
- * Class: TestClass1
- * Method: bmn
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_bmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: smn
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_smn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: imn
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_imn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: lmn
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_lmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: fmn
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_fmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: dmn
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_dmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: omn
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_omn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: tmn
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_tmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: gmn
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_gmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: vmn
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_vmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: bamn
- * Signature: ()[B
- */
-JNIEXPORT jbyteArray JNICALL Java_TestClass1_bamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: samn
- * Signature: ()[S
- */
-JNIEXPORT jshortArray JNICALL Java_TestClass1_samn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: iamn
- * Signature: ()[I
- */
-JNIEXPORT jintArray JNICALL Java_TestClass1_iamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: lamn
- * Signature: ()[J
- */
-JNIEXPORT jlongArray JNICALL Java_TestClass1_lamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: famn
- * Signature: ()[F
- */
-JNIEXPORT jfloatArray JNICALL Java_TestClass1_famn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: damn
- * Signature: ()[D
- */
-JNIEXPORT jdoubleArray JNICALL Java_TestClass1_damn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: oamn
- * Signature: ()[Ljava/lang/Object;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_oamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: tamn
- * Signature: ()[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_tamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: gamn
- * Signature: ()[Ljava/util/List;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_gamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: baamn
- * Signature: ()[[B
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_baamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: saamn
- * Signature: ()[[S
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_saamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: iaamn
- * Signature: ()[[I
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_iaamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: laamn
- * Signature: ()[[J
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_laamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: faamn
- * Signature: ()[[F
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_faamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: daamn
- * Signature: ()[[D
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_daamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: oaamn
- * Signature: ()[[Ljava/lang/Object;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_oaamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: taamn
- * Signature: ()[[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_taamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: gaamn
- * Signature: ()[Ljava/util/List;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_gaamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: bmn1
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_bmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: smn1
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_smn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: imn1
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_imn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: lmn1
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_lmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: fmn1
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_fmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: dmn1
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_dmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: omn1
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_omn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: tmn1
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_tmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: gmn1
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_gmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: vmn1
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_vmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: bmn2
- * Signature: (I)B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_bmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: smn2
- * Signature: (I)S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_smn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: imn2
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_imn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: lmn2
- * Signature: (I)J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_lmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: fmn2
- * Signature: (I)F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_fmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: dmn2
- * Signature: (I)D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_dmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: omn2
- * Signature: (I)Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_omn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: tmn2
- * Signature: (I)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_tmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: gmn2
- * Signature: (I)Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_gmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: vmn2
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_vmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: mbn
- * Signature: (B)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mbn
- (JNIEnv *, jobject, jbyte);
-
-/*
- * Class: TestClass1
- * Method: msn
- * Signature: (S)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_msn
- (JNIEnv *, jobject, jshort);
-
-/*
- * Class: TestClass1
- * Method: min
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_min
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: mln
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mln
- (JNIEnv *, jobject, jlong);
-
-/*
- * Class: TestClass1
- * Method: mfn
- * Signature: (F)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mfn
- (JNIEnv *, jobject, jfloat);
-
-/*
- * Class: TestClass1
- * Method: mdn
- * Signature: (D)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mdn
- (JNIEnv *, jobject, jdouble);
-
-/*
- * Class: TestClass1
- * Method: mon
- * Signature: (Ljava/lang/Object;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mon
- (JNIEnv *, jobject, jobject);
-
-/*
- * Class: TestClass1
- * Method: mtn
- * Signature: (Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mtn
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: TestClass1
- * Method: mgn
- * Signature: (Ljava/util/List;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mgn
- (JNIEnv *, jobject, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
--- a/test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass1_Inner1.h Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,337 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class TestClass1_Inner1 */
-
-#ifndef _Included_TestClass1_Inner1
-#define _Included_TestClass1_Inner1
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef TestClass1_Inner1_bc
-#define TestClass1_Inner1_bc 0L
-#undef TestClass1_Inner1_sc
-#define TestClass1_Inner1_sc 0L
-#undef TestClass1_Inner1_ic
-#define TestClass1_Inner1_ic 0L
-#undef TestClass1_Inner1_lc
-#define TestClass1_Inner1_lc 0LL
-#undef TestClass1_Inner1_fc
-#define TestClass1_Inner1_fc 0.0f
-#undef TestClass1_Inner1_dc
-#define TestClass1_Inner1_dc 0.0
-/*
- * Class: TestClass1_Inner1
- * Method: bmn
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner1_bmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: smn
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner1_smn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: imn
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner1_imn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: lmn
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner1_lmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: fmn
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner1_fmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: dmn
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner1_dmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: omn
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_omn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: tmn
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner1_tmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: gmn
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_gmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: vmn
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_vmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: bmn1
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner1_bmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: smn1
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner1_smn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: imn1
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner1_imn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: lmn1
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner1_lmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: fmn1
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner1_fmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: dmn1
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner1_dmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: omn1
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_omn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: tmn1
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner1_tmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: gmn1
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_gmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: vmn1
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_vmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: bmn2
- * Signature: (I)B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner1_bmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: smn2
- * Signature: (I)S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner1_smn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: imn2
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner1_imn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: lmn2
- * Signature: (I)J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner1_lmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: fmn2
- * Signature: (I)F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner1_fmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: dmn2
- * Signature: (I)D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner1_dmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: omn2
- * Signature: (I)Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_omn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: tmn2
- * Signature: (I)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner1_tmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: gmn2
- * Signature: (I)Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_gmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: vmn2
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_vmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mbn
- * Signature: (B)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mbn
- (JNIEnv *, jobject, jbyte);
-
-/*
- * Class: TestClass1_Inner1
- * Method: msn
- * Signature: (S)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_msn
- (JNIEnv *, jobject, jshort);
-
-/*
- * Class: TestClass1_Inner1
- * Method: min
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_min
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mln
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mln
- (JNIEnv *, jobject, jlong);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mfn
- * Signature: (F)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mfn
- (JNIEnv *, jobject, jfloat);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mdn
- * Signature: (D)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mdn
- (JNIEnv *, jobject, jdouble);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mon
- * Signature: (Ljava/lang/Object;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mon
- (JNIEnv *, jobject, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mtn
- * Signature: (Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mtn
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mgn
- * Signature: (Ljava/util/List;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mgn
- (JNIEnv *, jobject, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
--- a/test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass1_Inner2.h Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,337 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class TestClass1_Inner2 */
-
-#ifndef _Included_TestClass1_Inner2
-#define _Included_TestClass1_Inner2
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef TestClass1_Inner2_bc
-#define TestClass1_Inner2_bc 0L
-#undef TestClass1_Inner2_sc
-#define TestClass1_Inner2_sc 0L
-#undef TestClass1_Inner2_ic
-#define TestClass1_Inner2_ic 0L
-#undef TestClass1_Inner2_lc
-#define TestClass1_Inner2_lc 0LL
-#undef TestClass1_Inner2_fc
-#define TestClass1_Inner2_fc 0.0f
-#undef TestClass1_Inner2_dc
-#define TestClass1_Inner2_dc 0.0
-/*
- * Class: TestClass1_Inner2
- * Method: bmn
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner2_bmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: smn
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner2_smn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: imn
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner2_imn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: lmn
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner2_lmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: fmn
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner2_fmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: dmn
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner2_dmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: omn
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_omn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: tmn
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner2_tmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: gmn
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_gmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: vmn
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_vmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: bmn1
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner2_bmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: smn1
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner2_smn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: imn1
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner2_imn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: lmn1
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner2_lmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: fmn1
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner2_fmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: dmn1
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner2_dmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: omn1
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_omn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: tmn1
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner2_tmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: gmn1
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_gmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: vmn1
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_vmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: bmn2
- * Signature: (I)B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner2_bmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: smn2
- * Signature: (I)S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner2_smn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: imn2
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner2_imn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: lmn2
- * Signature: (I)J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner2_lmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: fmn2
- * Signature: (I)F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner2_fmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: dmn2
- * Signature: (I)D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner2_dmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: omn2
- * Signature: (I)Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_omn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: tmn2
- * Signature: (I)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner2_tmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: gmn2
- * Signature: (I)Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_gmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: vmn2
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_vmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mbn
- * Signature: (B)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mbn
- (JNIEnv *, jobject, jbyte);
-
-/*
- * Class: TestClass1_Inner2
- * Method: msn
- * Signature: (S)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_msn
- (JNIEnv *, jobject, jshort);
-
-/*
- * Class: TestClass1_Inner2
- * Method: min
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_min
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mln
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mln
- (JNIEnv *, jobject, jlong);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mfn
- * Signature: (F)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mfn
- (JNIEnv *, jobject, jfloat);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mdn
- * Signature: (D)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mdn
- (JNIEnv *, jobject, jdouble);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mon
- * Signature: (Ljava/lang/Object;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mon
- (JNIEnv *, jobject, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mtn
- * Signature: (Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mtn
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mgn
- * Signature: (Ljava/util/List;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mgn
- (JNIEnv *, jobject, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
--- a/test/langtools/tools/javah/6572945/gold/jni.dir.1/TestClass2.h Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class TestClass2 */
-
-#ifndef _Included_TestClass2
-#define _Included_TestClass2
-#ifdef __cplusplus
-extern "C" {
-#endif
-#ifdef __cplusplus
-}
-#endif
-#endif
--- a/test/langtools/tools/javah/6572945/gold/jni.file.1 Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1151 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class TestClass1 */
-
-#ifndef _Included_TestClass1
-#define _Included_TestClass1
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef TestClass1_bc
-#define TestClass1_bc 0L
-#undef TestClass1_sc
-#define TestClass1_sc 0L
-#undef TestClass1_ic
-#define TestClass1_ic 0L
-#undef TestClass1_lc
-#define TestClass1_lc 0LL
-#undef TestClass1_fc
-#define TestClass1_fc 0.0f
-#undef TestClass1_dc
-#define TestClass1_dc 0.0
-/*
- * Class: TestClass1
- * Method: bmn
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_bmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: smn
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_smn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: imn
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_imn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: lmn
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_lmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: fmn
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_fmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: dmn
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_dmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: omn
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_omn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: tmn
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_tmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: gmn
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_gmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: vmn
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_vmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: bamn
- * Signature: ()[B
- */
-JNIEXPORT jbyteArray JNICALL Java_TestClass1_bamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: samn
- * Signature: ()[S
- */
-JNIEXPORT jshortArray JNICALL Java_TestClass1_samn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: iamn
- * Signature: ()[I
- */
-JNIEXPORT jintArray JNICALL Java_TestClass1_iamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: lamn
- * Signature: ()[J
- */
-JNIEXPORT jlongArray JNICALL Java_TestClass1_lamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: famn
- * Signature: ()[F
- */
-JNIEXPORT jfloatArray JNICALL Java_TestClass1_famn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: damn
- * Signature: ()[D
- */
-JNIEXPORT jdoubleArray JNICALL Java_TestClass1_damn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: oamn
- * Signature: ()[Ljava/lang/Object;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_oamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: tamn
- * Signature: ()[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_tamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: gamn
- * Signature: ()[Ljava/util/List;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_gamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: baamn
- * Signature: ()[[B
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_baamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: saamn
- * Signature: ()[[S
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_saamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: iaamn
- * Signature: ()[[I
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_iaamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: laamn
- * Signature: ()[[J
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_laamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: faamn
- * Signature: ()[[F
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_faamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: daamn
- * Signature: ()[[D
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_daamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: oaamn
- * Signature: ()[[Ljava/lang/Object;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_oaamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: taamn
- * Signature: ()[[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_taamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: gaamn
- * Signature: ()[Ljava/util/List;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_gaamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: bmn1
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_bmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: smn1
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_smn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: imn1
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_imn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: lmn1
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_lmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: fmn1
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_fmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: dmn1
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_dmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: omn1
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_omn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: tmn1
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_tmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: gmn1
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_gmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: vmn1
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_vmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: bmn2
- * Signature: (I)B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_bmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: smn2
- * Signature: (I)S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_smn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: imn2
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_imn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: lmn2
- * Signature: (I)J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_lmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: fmn2
- * Signature: (I)F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_fmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: dmn2
- * Signature: (I)D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_dmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: omn2
- * Signature: (I)Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_omn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: tmn2
- * Signature: (I)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_tmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: gmn2
- * Signature: (I)Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_gmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: vmn2
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_vmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: mbn
- * Signature: (B)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mbn
- (JNIEnv *, jobject, jbyte);
-
-/*
- * Class: TestClass1
- * Method: msn
- * Signature: (S)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_msn
- (JNIEnv *, jobject, jshort);
-
-/*
- * Class: TestClass1
- * Method: min
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_min
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: mln
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mln
- (JNIEnv *, jobject, jlong);
-
-/*
- * Class: TestClass1
- * Method: mfn
- * Signature: (F)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mfn
- (JNIEnv *, jobject, jfloat);
-
-/*
- * Class: TestClass1
- * Method: mdn
- * Signature: (D)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mdn
- (JNIEnv *, jobject, jdouble);
-
-/*
- * Class: TestClass1
- * Method: mon
- * Signature: (Ljava/lang/Object;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mon
- (JNIEnv *, jobject, jobject);
-
-/*
- * Class: TestClass1
- * Method: mtn
- * Signature: (Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mtn
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: TestClass1
- * Method: mgn
- * Signature: (Ljava/util/List;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mgn
- (JNIEnv *, jobject, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
-/* Header for class TestClass1_Inner2 */
-
-#ifndef _Included_TestClass1_Inner2
-#define _Included_TestClass1_Inner2
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef TestClass1_Inner2_bc
-#define TestClass1_Inner2_bc 0L
-#undef TestClass1_Inner2_sc
-#define TestClass1_Inner2_sc 0L
-#undef TestClass1_Inner2_ic
-#define TestClass1_Inner2_ic 0L
-#undef TestClass1_Inner2_lc
-#define TestClass1_Inner2_lc 0LL
-#undef TestClass1_Inner2_fc
-#define TestClass1_Inner2_fc 0.0f
-#undef TestClass1_Inner2_dc
-#define TestClass1_Inner2_dc 0.0
-/*
- * Class: TestClass1_Inner2
- * Method: bmn
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner2_bmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: smn
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner2_smn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: imn
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner2_imn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: lmn
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner2_lmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: fmn
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner2_fmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: dmn
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner2_dmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: omn
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_omn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: tmn
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner2_tmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: gmn
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_gmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: vmn
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_vmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: bmn1
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner2_bmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: smn1
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner2_smn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: imn1
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner2_imn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: lmn1
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner2_lmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: fmn1
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner2_fmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: dmn1
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner2_dmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: omn1
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_omn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: tmn1
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner2_tmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: gmn1
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_gmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: vmn1
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_vmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: bmn2
- * Signature: (I)B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner2_bmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: smn2
- * Signature: (I)S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner2_smn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: imn2
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner2_imn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: lmn2
- * Signature: (I)J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner2_lmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: fmn2
- * Signature: (I)F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner2_fmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: dmn2
- * Signature: (I)D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner2_dmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: omn2
- * Signature: (I)Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_omn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: tmn2
- * Signature: (I)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner2_tmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: gmn2
- * Signature: (I)Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_gmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: vmn2
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_vmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mbn
- * Signature: (B)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mbn
- (JNIEnv *, jobject, jbyte);
-
-/*
- * Class: TestClass1_Inner2
- * Method: msn
- * Signature: (S)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_msn
- (JNIEnv *, jobject, jshort);
-
-/*
- * Class: TestClass1_Inner2
- * Method: min
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_min
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mln
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mln
- (JNIEnv *, jobject, jlong);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mfn
- * Signature: (F)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mfn
- (JNIEnv *, jobject, jfloat);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mdn
- * Signature: (D)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mdn
- (JNIEnv *, jobject, jdouble);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mon
- * Signature: (Ljava/lang/Object;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mon
- (JNIEnv *, jobject, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mtn
- * Signature: (Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mtn
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mgn
- * Signature: (Ljava/util/List;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mgn
- (JNIEnv *, jobject, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
-/* Header for class TestClass1_Inner1 */
-
-#ifndef _Included_TestClass1_Inner1
-#define _Included_TestClass1_Inner1
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef TestClass1_Inner1_bc
-#define TestClass1_Inner1_bc 0L
-#undef TestClass1_Inner1_sc
-#define TestClass1_Inner1_sc 0L
-#undef TestClass1_Inner1_ic
-#define TestClass1_Inner1_ic 0L
-#undef TestClass1_Inner1_lc
-#define TestClass1_Inner1_lc 0LL
-#undef TestClass1_Inner1_fc
-#define TestClass1_Inner1_fc 0.0f
-#undef TestClass1_Inner1_dc
-#define TestClass1_Inner1_dc 0.0
-/*
- * Class: TestClass1_Inner1
- * Method: bmn
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner1_bmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: smn
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner1_smn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: imn
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner1_imn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: lmn
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner1_lmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: fmn
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner1_fmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: dmn
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner1_dmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: omn
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_omn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: tmn
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner1_tmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: gmn
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_gmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: vmn
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_vmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: bmn1
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner1_bmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: smn1
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner1_smn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: imn1
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner1_imn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: lmn1
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner1_lmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: fmn1
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner1_fmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: dmn1
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner1_dmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: omn1
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_omn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: tmn1
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner1_tmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: gmn1
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_gmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: vmn1
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_vmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: bmn2
- * Signature: (I)B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner1_bmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: smn2
- * Signature: (I)S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner1_smn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: imn2
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner1_imn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: lmn2
- * Signature: (I)J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner1_lmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: fmn2
- * Signature: (I)F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner1_fmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: dmn2
- * Signature: (I)D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner1_dmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: omn2
- * Signature: (I)Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_omn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: tmn2
- * Signature: (I)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner1_tmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: gmn2
- * Signature: (I)Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_gmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: vmn2
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_vmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mbn
- * Signature: (B)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mbn
- (JNIEnv *, jobject, jbyte);
-
-/*
- * Class: TestClass1_Inner1
- * Method: msn
- * Signature: (S)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_msn
- (JNIEnv *, jobject, jshort);
-
-/*
- * Class: TestClass1_Inner1
- * Method: min
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_min
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mln
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mln
- (JNIEnv *, jobject, jlong);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mfn
- * Signature: (F)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mfn
- (JNIEnv *, jobject, jfloat);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mdn
- * Signature: (D)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mdn
- (JNIEnv *, jobject, jdouble);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mon
- * Signature: (Ljava/lang/Object;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mon
- (JNIEnv *, jobject, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mtn
- * Signature: (Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mtn
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mgn
- * Signature: (Ljava/util/List;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mgn
- (JNIEnv *, jobject, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
--- a/test/langtools/tools/javah/6572945/gold/jni.file.2 Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1162 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class TestClass1 */
-
-#ifndef _Included_TestClass1
-#define _Included_TestClass1
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef TestClass1_bc
-#define TestClass1_bc 0L
-#undef TestClass1_sc
-#define TestClass1_sc 0L
-#undef TestClass1_ic
-#define TestClass1_ic 0L
-#undef TestClass1_lc
-#define TestClass1_lc 0LL
-#undef TestClass1_fc
-#define TestClass1_fc 0.0f
-#undef TestClass1_dc
-#define TestClass1_dc 0.0
-/*
- * Class: TestClass1
- * Method: bmn
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_bmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: smn
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_smn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: imn
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_imn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: lmn
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_lmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: fmn
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_fmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: dmn
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_dmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: omn
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_omn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: tmn
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_tmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: gmn
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_gmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: vmn
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_vmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: bamn
- * Signature: ()[B
- */
-JNIEXPORT jbyteArray JNICALL Java_TestClass1_bamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: samn
- * Signature: ()[S
- */
-JNIEXPORT jshortArray JNICALL Java_TestClass1_samn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: iamn
- * Signature: ()[I
- */
-JNIEXPORT jintArray JNICALL Java_TestClass1_iamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: lamn
- * Signature: ()[J
- */
-JNIEXPORT jlongArray JNICALL Java_TestClass1_lamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: famn
- * Signature: ()[F
- */
-JNIEXPORT jfloatArray JNICALL Java_TestClass1_famn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: damn
- * Signature: ()[D
- */
-JNIEXPORT jdoubleArray JNICALL Java_TestClass1_damn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: oamn
- * Signature: ()[Ljava/lang/Object;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_oamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: tamn
- * Signature: ()[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_tamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: gamn
- * Signature: ()[Ljava/util/List;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_gamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: baamn
- * Signature: ()[[B
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_baamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: saamn
- * Signature: ()[[S
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_saamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: iaamn
- * Signature: ()[[I
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_iaamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: laamn
- * Signature: ()[[J
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_laamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: faamn
- * Signature: ()[[F
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_faamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: daamn
- * Signature: ()[[D
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_daamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: oaamn
- * Signature: ()[[Ljava/lang/Object;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_oaamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: taamn
- * Signature: ()[[Ljava/lang/String;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_taamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: gaamn
- * Signature: ()[Ljava/util/List;
- */
-JNIEXPORT jobjectArray JNICALL Java_TestClass1_gaamn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: bmn1
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_bmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: smn1
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_smn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: imn1
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_imn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: lmn1
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_lmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: fmn1
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_fmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: dmn1
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_dmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: omn1
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_omn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: tmn1
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_tmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: gmn1
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_gmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: vmn1
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_vmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1
- * Method: bmn2
- * Signature: (I)B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_bmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: smn2
- * Signature: (I)S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_smn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: imn2
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_imn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: lmn2
- * Signature: (I)J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_lmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: fmn2
- * Signature: (I)F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_fmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: dmn2
- * Signature: (I)D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_dmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: omn2
- * Signature: (I)Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_omn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: tmn2
- * Signature: (I)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_tmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: gmn2
- * Signature: (I)Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_gmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: vmn2
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_vmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: mbn
- * Signature: (B)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mbn
- (JNIEnv *, jobject, jbyte);
-
-/*
- * Class: TestClass1
- * Method: msn
- * Signature: (S)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_msn
- (JNIEnv *, jobject, jshort);
-
-/*
- * Class: TestClass1
- * Method: min
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_min
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1
- * Method: mln
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mln
- (JNIEnv *, jobject, jlong);
-
-/*
- * Class: TestClass1
- * Method: mfn
- * Signature: (F)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mfn
- (JNIEnv *, jobject, jfloat);
-
-/*
- * Class: TestClass1
- * Method: mdn
- * Signature: (D)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mdn
- (JNIEnv *, jobject, jdouble);
-
-/*
- * Class: TestClass1
- * Method: mon
- * Signature: (Ljava/lang/Object;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mon
- (JNIEnv *, jobject, jobject);
-
-/*
- * Class: TestClass1
- * Method: mtn
- * Signature: (Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mtn
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: TestClass1
- * Method: mgn
- * Signature: (Ljava/util/List;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_mgn
- (JNIEnv *, jobject, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
-/* Header for class TestClass1_Inner2 */
-
-#ifndef _Included_TestClass1_Inner2
-#define _Included_TestClass1_Inner2
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef TestClass1_Inner2_bc
-#define TestClass1_Inner2_bc 0L
-#undef TestClass1_Inner2_sc
-#define TestClass1_Inner2_sc 0L
-#undef TestClass1_Inner2_ic
-#define TestClass1_Inner2_ic 0L
-#undef TestClass1_Inner2_lc
-#define TestClass1_Inner2_lc 0LL
-#undef TestClass1_Inner2_fc
-#define TestClass1_Inner2_fc 0.0f
-#undef TestClass1_Inner2_dc
-#define TestClass1_Inner2_dc 0.0
-/*
- * Class: TestClass1_Inner2
- * Method: bmn
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner2_bmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: smn
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner2_smn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: imn
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner2_imn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: lmn
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner2_lmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: fmn
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner2_fmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: dmn
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner2_dmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: omn
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_omn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: tmn
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner2_tmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: gmn
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_gmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: vmn
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_vmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: bmn1
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner2_bmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: smn1
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner2_smn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: imn1
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner2_imn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: lmn1
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner2_lmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: fmn1
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner2_fmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: dmn1
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner2_dmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: omn1
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_omn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: tmn1
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner2_tmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: gmn1
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_gmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: vmn1
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_vmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: bmn2
- * Signature: (I)B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner2_bmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: smn2
- * Signature: (I)S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner2_smn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: imn2
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner2_imn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: lmn2
- * Signature: (I)J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner2_lmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: fmn2
- * Signature: (I)F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner2_fmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: dmn2
- * Signature: (I)D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner2_dmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: omn2
- * Signature: (I)Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_omn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: tmn2
- * Signature: (I)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner2_tmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: gmn2
- * Signature: (I)Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner2_gmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: vmn2
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_vmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mbn
- * Signature: (B)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mbn
- (JNIEnv *, jobject, jbyte);
-
-/*
- * Class: TestClass1_Inner2
- * Method: msn
- * Signature: (S)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_msn
- (JNIEnv *, jobject, jshort);
-
-/*
- * Class: TestClass1_Inner2
- * Method: min
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_min
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mln
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mln
- (JNIEnv *, jobject, jlong);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mfn
- * Signature: (F)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mfn
- (JNIEnv *, jobject, jfloat);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mdn
- * Signature: (D)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mdn
- (JNIEnv *, jobject, jdouble);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mon
- * Signature: (Ljava/lang/Object;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mon
- (JNIEnv *, jobject, jobject);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mtn
- * Signature: (Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mtn
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: TestClass1_Inner2
- * Method: mgn
- * Signature: (Ljava/util/List;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner2_mgn
- (JNIEnv *, jobject, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
-/* Header for class TestClass1_Inner1 */
-
-#ifndef _Included_TestClass1_Inner1
-#define _Included_TestClass1_Inner1
-#ifdef __cplusplus
-extern "C" {
-#endif
-#undef TestClass1_Inner1_bc
-#define TestClass1_Inner1_bc 0L
-#undef TestClass1_Inner1_sc
-#define TestClass1_Inner1_sc 0L
-#undef TestClass1_Inner1_ic
-#define TestClass1_Inner1_ic 0L
-#undef TestClass1_Inner1_lc
-#define TestClass1_Inner1_lc 0LL
-#undef TestClass1_Inner1_fc
-#define TestClass1_Inner1_fc 0.0f
-#undef TestClass1_Inner1_dc
-#define TestClass1_Inner1_dc 0.0
-/*
- * Class: TestClass1_Inner1
- * Method: bmn
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner1_bmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: smn
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner1_smn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: imn
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner1_imn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: lmn
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner1_lmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: fmn
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner1_fmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: dmn
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner1_dmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: omn
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_omn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: tmn
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner1_tmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: gmn
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_gmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: vmn
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_vmn
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: bmn1
- * Signature: ()B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner1_bmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: smn1
- * Signature: ()S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner1_smn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: imn1
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner1_imn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: lmn1
- * Signature: ()J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner1_lmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: fmn1
- * Signature: ()F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner1_fmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: dmn1
- * Signature: ()D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner1_dmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: omn1
- * Signature: ()Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_omn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: tmn1
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner1_tmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: gmn1
- * Signature: ()Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_gmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: vmn1
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_vmn1
- (JNIEnv *, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: bmn2
- * Signature: (I)B
- */
-JNIEXPORT jbyte JNICALL Java_TestClass1_00024Inner1_bmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: smn2
- * Signature: (I)S
- */
-JNIEXPORT jshort JNICALL Java_TestClass1_00024Inner1_smn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: imn2
- * Signature: (I)I
- */
-JNIEXPORT jint JNICALL Java_TestClass1_00024Inner1_imn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: lmn2
- * Signature: (I)J
- */
-JNIEXPORT jlong JNICALL Java_TestClass1_00024Inner1_lmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: fmn2
- * Signature: (I)F
- */
-JNIEXPORT jfloat JNICALL Java_TestClass1_00024Inner1_fmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: dmn2
- * Signature: (I)D
- */
-JNIEXPORT jdouble JNICALL Java_TestClass1_00024Inner1_dmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: omn2
- * Signature: (I)Ljava/lang/Object;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_omn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: tmn2
- * Signature: (I)Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_TestClass1_00024Inner1_tmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: gmn2
- * Signature: (I)Ljava/util/List;
- */
-JNIEXPORT jobject JNICALL Java_TestClass1_00024Inner1_gmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: vmn2
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_vmn2
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mbn
- * Signature: (B)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mbn
- (JNIEnv *, jobject, jbyte);
-
-/*
- * Class: TestClass1_Inner1
- * Method: msn
- * Signature: (S)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_msn
- (JNIEnv *, jobject, jshort);
-
-/*
- * Class: TestClass1_Inner1
- * Method: min
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_min
- (JNIEnv *, jobject, jint);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mln
- * Signature: (J)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mln
- (JNIEnv *, jobject, jlong);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mfn
- * Signature: (F)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mfn
- (JNIEnv *, jobject, jfloat);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mdn
- * Signature: (D)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mdn
- (JNIEnv *, jobject, jdouble);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mon
- * Signature: (Ljava/lang/Object;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mon
- (JNIEnv *, jobject, jobject);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mtn
- * Signature: (Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mtn
- (JNIEnv *, jobject, jstring);
-
-/*
- * Class: TestClass1_Inner1
- * Method: mgn
- * Signature: (Ljava/util/List;)V
- */
-JNIEXPORT void JNICALL Java_TestClass1_00024Inner1_mgn
- (JNIEnv *, jobject, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
-/* Header for class TestClass2 */
-
-#ifndef _Included_TestClass2
-#define _Included_TestClass2
-#ifdef __cplusplus
-extern "C" {
-#endif
-#ifdef __cplusplus
-}
-#endif
-#endif
--- a/test/langtools/tools/javah/6572945/gold/jni.file.3 Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class TestClass3 */
-
-#ifndef _Included_TestClass3
-#define _Included_TestClass3
-#ifdef __cplusplus
-extern "C" {
-#endif
-#ifdef __cplusplus
-}
-#endif
-#endif
-/* Header for class TestClass3_Inner2 */
-
-#ifndef _Included_TestClass3_Inner2
-#define _Included_TestClass3_Inner2
-#ifdef __cplusplus
-extern "C" {
-#endif
-#ifdef __cplusplus
-}
-#endif
-#endif
-/* Header for class TestClass3_Inner2_Inner2B */
-
-#ifndef _Included_TestClass3_Inner2_Inner2B
-#define _Included_TestClass3_Inner2_Inner2B
-#ifdef __cplusplus
-extern "C" {
-#endif
-#ifdef __cplusplus
-}
-#endif
-#endif
-/* Header for class TestClass3_Inner2_Inner2A */
-
-#ifndef _Included_TestClass3_Inner2_Inner2A
-#define _Included_TestClass3_Inner2_Inner2A
-#ifdef __cplusplus
-extern "C" {
-#endif
-#ifdef __cplusplus
-}
-#endif
-#endif
-/* Header for class TestClass3_Inner1 */
-
-#ifndef _Included_TestClass3_Inner1
-#define _Included_TestClass3_Inner1
-#ifdef __cplusplus
-extern "C" {
-#endif
-#ifdef __cplusplus
-}
-#endif
-#endif
-/* Header for class TestClass3_Inner1_Inner1B */
-
-#ifndef _Included_TestClass3_Inner1_Inner1B
-#define _Included_TestClass3_Inner1_Inner1B
-#ifdef __cplusplus
-extern "C" {
-#endif
-#ifdef __cplusplus
-}
-#endif
-#endif
-/* Header for class TestClass3_Inner1_Inner1A */
-
-#ifndef _Included_TestClass3_Inner1_Inner1A
-#define _Included_TestClass3_Inner1_Inner1A
-#ifdef __cplusplus
-extern "C" {
-#endif
-#ifdef __cplusplus
-}
-#endif
-#endif
--- a/test/langtools/tools/javah/ModuleClass.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2012, 2016, 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 8049811
- * @summary javah should accept module/class names
- * @library /tools/lib
- * @modules jdk.compiler/com.sun.tools.javac.api
- * jdk.compiler/com.sun.tools.javac.main
- * jdk.compiler/com.sun.tools.javah
- * @build toolbox.ToolBox toolbox.JavahTask
- * @run main ModuleClass
- */
-
-import java.util.List;
-
-import toolbox.JavahTask;
-import toolbox.ToolBox;
-
-public class ModuleClass {
- static public void main(String[] args) throws Exception {
- ToolBox tb = new ToolBox();
- check(tb, "java.lang.Object");
- check(tb, "java.base/java.io.File");
- }
-
- static void check(ToolBox tb, String name) throws Exception {
- new JavahTask(tb)
- .classes(name)
- .run();
-
- int sep = name.indexOf("/");
- String className = (sep == -1) ? name : name.substring(sep + 1);
- String file = className.replace(".", "_") + ".h";
- List<String> outObject = tb.readAllLines(file);
-
- String text = "#ifndef _Included_" + className.replace(".", "_");
- if (!outObject.contains(text)) {
- throw new Exception("expected line not found");
- }
- }
-}
-
--- a/test/langtools/tools/javah/ReadOldClass.sh Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2005, 2009, 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.
-#
-# 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.
-#
-
-#
-# @test
-# @bug 4164450
-# @summary Ensure that javah/javadoc doesn't try to read (new) source files
-# @author Peter von der Ah\u00e9
-# @run shell ReadOldClass.sh
-#
-
-TS=${TESTSRC-.}
-TC=${TESTCLASSES-.}
-
-if [ "${TESTJAVA}" = "" ]
-then
- echo "TESTJAVA not set. Test cannot execute. Failed."
- exit 1
-fi
-
-# set platform-dependent variables
-OS=`uname -s`
-case "$OS" in
- SunOS | Linux | Darwin | CYGWIN* )
- PS=":"
- FS="/"
- ;;
- Windows* )
- PS=";"
- FS="\\"
- ;;
- * )
- echo "Unrecognized system!"
- exit 1;
- ;;
-esac
-
-cat > "${TC}/ReadOldClass.java" <<EOF
-public class ReadOldClass {
- public static void main(String[] args) {
- }
-}
-EOF
-
-rm -f ${TC}/ReadOldClass.h
-
-set -e
-
-# compile the file
-"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d "${TC}" "${TC}/ReadOldClass.java"
-# ensure the source file is newer than the class file
-touch "${TC}/ReadOldClass.java"
-"${TESTJAVA}${FS}bin${FS}javah" ${TESTTOOLVMOPTS} -jni -classpath "${TC}" -d "${TC}" ReadOldClass
-
-test -f "${TC}/ReadOldClass.h"
--- a/test/langtools/tools/javah/T4942232/MissingParamClassTest.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2013, 2016, 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 4942232
- * @summary Verifies that javah won't attempt to generate a header file if a
- * native method in a supplied class contains a parameter type whose corresponding
- * class is missing or not in the classpath
- * @library /tools/lib
- * @modules jdk.compiler/com.sun.tools.javac.api
- * jdk.compiler/com.sun.tools.javac.main
- * jdk.compiler/com.sun.tools.javah
- * @build toolbox.ToolBox toolbox.JavahTask
- * @run compile MissingParamClassTest.java
- * @clean MissingParamClassException
- * @run main MissingParamClassTest
- * @run compile MissingParamClassTest.java
- * @clean Param
- * @run main MissingParamClassTest
- */
-
-import java.nio.file.Files;
-import java.nio.file.Paths;
-
-import toolbox.JavahTask;
-import toolbox.Task;
-import toolbox.ToolBox;
-
-// Original test: test/tools/javah/MissingParamClassTest.sh
-public class MissingParamClassTest {
-
- public static void main(String[] args) throws Exception {
- ToolBox tb = new ToolBox();
-
- String out = new JavahTask(tb)
- .classpath(ToolBox.testClasses)
- .classes("ParamClassTest")
- .run(Task.Expect.FAIL)
- .getOutput(Task.OutputKind.DIRECT);
-
- if (Files.exists(Paths.get("ParamClassTest.h")) || out.isEmpty())
- throw new AssertionError("The only output generated by javah must be an error message");
- }
-
-}
-
-class MissingParamClassException extends Exception {
- public MissingParamClassException() {
- System.out.println("MissingParamClassException constructor called");
- }
-}
-
-class ParamClassTest {
- public native void method(Param s);
-
- public static void main(String args[]) {
- }
-}
-
-class Param extends MissingParamClassException {
- Param() {
- System.out.println("Param constructor");
- }
-}
--- a/test/langtools/tools/javah/T5070898.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2007, 2015, 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.
- *
- * 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.
- */
-
-/* @test
- * @bug 5070898
- * @summary javah command doesn't throw correct exit code in case of error
- * @modules java.compiler
- * jdk.compiler
- */
-
-import java.io.*;
-import java.util.*;
-import javax.tools.*;
-
-public class T5070898
-{
- public static void main(String... args) throws Exception {
- new T5070898().run();
- }
-
- public void run() throws Exception {
- writeFile();
- compileFile();
-
- int rc = runJavah();
- System.err.println("exit code: " + rc);
- if (rc == 0)
- throw new Exception("unexpected exit code: " + rc);
- }
-
- void writeFile() throws Exception {
- String content =
- "package test;\n" +
- "public class JavahTest{\n" +
- " public static void main(String args){\n" +
- " System.out.println(\"Test Message\");" +
- " }\n" +
- " private static native Object nativeTest();\n" +
- "}\n";
- FileWriter out = new FileWriter("JavahTest.java");
- try {
- out.write(content);
- } finally {
- out.close();
- }
- }
-
- void compileFile() throws Exception {
- JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
- int rc = javac.run(null, null, null, "JavahTest.java");
- if (rc != 0)
- throw new Exception("compilation failed");
- }
-
- int runJavah() throws Exception {
- List<String> cmd = new ArrayList<String>();
- File java_home = new File(System.getProperty("java.home"));
- cmd.add(new File(new File(java_home, "bin"), "javah").getPath());
-
- cmd.add("JavahTest");
-
- ProcessBuilder pb = new ProcessBuilder(cmd);
- pb.redirectErrorStream(true);
- pb.environment().remove("CLASSPATH");
- Process p = pb.start();
- p.getOutputStream().close();
-
- String line;
- DataInputStream in = new DataInputStream(p.getInputStream());
- try {
- while ((line = in.readLine()) != null)
- System.err.println(line);
- } finally {
- in.close();
- }
-
- return p.waitFor();
- }
-}
--- a/test/langtools/tools/javah/T6893943.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2010, 2016, 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 6893943 6937318
- * @summary exit code from javah with no args is 0
- * @modules jdk.compiler/com.sun.tools.javah
- */
-
-import java.io.*;
-import java.util.*;
-
-public class T6893943 {
- static final String[] NO_ARGS = { "-XDsuppress-tool-removal-message" };
- static final String[] SUPPRESS_WARNING_PLUS_HELP = { "-XDsuppress-tool-removal-message", "-help" };
- static final String NEWLINE = System.getProperty("line.separator");
-
- public static void main(String... args) throws Exception {
- new T6893943().run();
- }
-
- void run() throws Exception {
- testSimpleAPI(NO_ARGS, 1);
- testSimpleAPI(SUPPRESS_WARNING_PLUS_HELP, 0);
- testCommand(NO_ARGS, 1);
- testCommand(SUPPRESS_WARNING_PLUS_HELP, 0);
- }
-
- void testSimpleAPI(String[] args, int expect_rc) throws Exception {
- System.err.println("Test simple api: " + Arrays.asList(args));
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- int rc = com.sun.tools.javah.Main.run(args, pw);
- pw.close();
- expect("testSimpleAPI", sw.toString(), rc, expect_rc);
- }
-
- void testCommand(String[] args, int expect_rc) throws Exception {
- System.err.println("Test command: " + Arrays.asList(args));
- File javaHome = new File(System.getProperty("java.home"));
- List<String> command = new ArrayList<String>();
- command.add(new File(new File(javaHome, "bin"), "javah").getPath());
- command.addAll(Arrays.asList(args));
- //System.err.println("command: " + command);
-
- ProcessBuilder pb = new ProcessBuilder(command);
- pb.redirectErrorStream(true);
- Process p = pb.start();
- p.getOutputStream().close();
- StringWriter sw = new StringWriter();
- String line;
- BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
- while ((line = in.readLine()) != null)
- sw.write(line + NEWLINE);
- int rc = p.waitFor();
- expect("testCommand", sw.toString(), rc, expect_rc);
- }
-
- void expect(String name, String out, int actual_rc, int expect_rc) throws Exception {
- if (out.isEmpty())
- throw new Exception("No output from javah");
-
- if (actual_rc != expect_rc)
- throw new Exception(name + ": unexpected exit: " + actual_rc + ", expected: " + expect_rc);
- }
-}
--- a/test/langtools/tools/javah/T6994608.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2010, 2016, 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 6994608
- * @summary javah no longer accepts parameter files as input
- * @modules jdk.compiler/com.sun.tools.javah
- */
-
-import java.io.*;
-import java.util.*;
-
-public class T6994608 {
- public static void main(String... args) throws Exception {
- new T6994608().run();
- }
-
- void run() throws Exception {
- Locale prev = Locale.getDefault();
- Locale.setDefault(Locale.ENGLISH);
- try {
- File f = writeFile(new File("classList"), "java.lang.Object");
- test(Arrays.asList("@" + f.getPath()), 0, null);
- test(Arrays.asList("@badfile"), 1, "Can't find file badfile");
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
- } finally {
- Locale.setDefault(prev);
- }
- }
-
- void test(List<String> args, int expectRC, String expectOut) {
- System.err.println("Test: " + args
- + " rc:" + expectRC
- + ((expectOut != null) ? " out:" + expectOut : ""));
-
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- int rc = com.sun.tools.javah.Main.run(args.toArray(new String[args.size()]), pw);
- pw.close();
- String out = sw.toString();
- if (!out.isEmpty())
- System.err.println(out);
-
- if (rc != expectRC)
- error("Unexpected exit code: " + rc + "; expected: " + expectRC);
- if (expectOut != null && !out.contains(expectOut))
- error("Expected string not found: " + expectOut);
-
- System.err.println();
- }
-
- File writeFile(File f, String s) throws IOException {
- if (f.getParentFile() != null)
- f.getParentFile().mkdirs();
- try (FileWriter out = new FileWriter(f)) {
- out.write(s);
- }
- return f;
- }
-
- void error(String msg) {
- System.err.println(msg);
- errors++;
- }
-
- int errors;
-}
-
--- a/test/langtools/tools/javah/T7126832/T7126832.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 2012, 2016, 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 7126832
- * @modules jdk.compiler/com.sun.tools.javah
- * @compile java.java
- * @summary com.sun.tools.javac.api.ClientCodeWrapper$WrappedJavaFileManager cannot be cast
- * @run main T7126832
- */
-
-import java.io.*;
-import java.util.*;
-
-public class T7126832 {
- public static void main(String... args) throws Exception {
- new T7126832().run();
- }
-
- void run() throws Exception {
- Locale prev = Locale.getDefault();
- Locale.setDefault(Locale.ENGLISH);
- try {
- // Verify that a .java file is correctly diagnosed
- File ff = writeFile(new File("JavahTest.java"), "class JavahTest {}");
- test(Arrays.asList(ff.getPath()), 1, "Could not find class file for 'JavahTest.java'.");
-
- // Verify that a class named 'xx.java' is accepted.
- // Note that ./xx/java.class exists, so this should work ok
- test(Arrays.asList("xx.java"), 0, null);
-
- if (errors > 0) {
- throw new Exception(errors + " errors occurred");
- }
- } finally {
- Locale.setDefault(prev);
- }
- }
-
- void test(List<String> args, int expectRC, String expectOut) {
- System.err.println("Test: " + args
- + " rc:" + expectRC
- + ((expectOut != null) ? " out:" + expectOut : ""));
-
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- int rc = 0;
- String out = null;
- try {
- rc = com.sun.tools.javah.Main.run(args.toArray(new String[args.size()]), pw);
- out = sw.toString();
- } catch(Exception ee) {
- rc = 1;
- out = ee.toString();;
- }
- pw.close();
- if (!out.isEmpty()) {
- System.err.println(out);
- }
- if (rc != expectRC) {
- error("Unexpected exit code: " + rc + "; expected: " + expectRC);
- }
- if (expectOut != null && !out.contains(expectOut)) {
- error("Expected string not found: " + expectOut);
- }
-
- System.err.println();
- }
-
- File writeFile(File ff, String ss) throws IOException {
- if (ff.getParentFile() != null)
- ff.getParentFile().mkdirs();
-
- try (FileWriter out = new FileWriter(ff)) {
- out.write(ss);
- }
- return ff;
- }
-
- void error(String msg) {
- System.err.println(msg);
- errors++;
- }
-
- int errors;
-}
-
--- a/test/langtools/tools/javah/T7126832/java.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 2012, 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.
- *
- * 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 xx;
-class java {
- int fred;
-}
--- a/test/langtools/tools/javah/T7185778.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2012, 2016, 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 7185778
- * @summary javah error "Not a valid class name" on class names with dollar signs
- * The first two tests are on an inner class name whose name does not contain $.
- * The second two tests are on an inner class name whose name does contain $.
- * The last test is on an outer class whose name contains $.
- * @modules jdk.compiler/com.sun.tools.javah
- * @run main T7185778 T7185778$inner
- * @run main T7185778 T7185778.inner
- * @run main T7185778 T7185778$inner$
- * @run main T7185778 T7185778.inner$
- * @run main T7185778 xx$yy
- */
-
-public class T7185778 {
- class inner {
- native byte[] xxxxx(String name);
- }
- class inner$ {
- native byte[] xxxxx(String name);
- }
-
- static public void main(String[] args) {
- int rc = com.sun.tools.javah.Main.run(args, null);
- if ( rc != 0) {
- throw new Error("javah returned non zero: " + rc);
- }
- }
-}
-
-class xx$yy {
- native byte[] xxxxx(String name);
-}
--- a/test/langtools/tools/javah/TestHelpOpts.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2010, 2016, 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 6893932 6990390
- * @summary javah help screen lists -h and -? but does not accept them
- * @modules jdk.compiler/com.sun.tools.javah
- */
-
-import java.io.*;
-import java.util.*;
-
-public class TestHelpOpts {
- public static void main(String... args) throws Exception {
- new TestHelpOpts().run();
- }
-
- void run() throws Exception {
- Locale prev = Locale.getDefault();
- try {
- Locale.setDefault(Locale.ENGLISH);
-
- String[] opts = { "-h", "-help", "-?", "--help" };
- for (String opt: opts)
- test(opt);
- } finally {
- Locale.setDefault(prev);
- }
-
- if (errors > 0)
- throw new Exception(errors + " errors occurred");
- }
-
- void test(String opt) {
- System.err.println("test " + opt);
- String[] args = { opt };
-
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- int rc = com.sun.tools.javah.Main.run(args, pw);
- pw.close();
- String out = sw.toString();
- if (!out.isEmpty())
- System.err.println(out);
- if (rc != 0)
- error("Unexpected exit: rc=" + rc);
-
- String flat = out.replaceAll("\\s+", " "); // canonicalize whitespace
- if (!flat.contains("Usage: javah [options] <classes> where [options] include:"))
- error("expected text not found");
- if (flat.contains("main.opt"))
- error("key not found in resource bundle: " + flat.replaceAll(".*(main.opt.[^ ]*).*", "$1"));
- }
-
- void error(String msg) {
- System.err.println(msg);
- errors++;
- }
-
- int errors;
-}
--- a/test/langtools/tools/javah/VersionTest.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2010, 2016, 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 6890226
- * @summary javah -version is broken
- * @modules jdk.compiler/com.sun.tools.javah
- */
-
-import java.io.*;
-import java.util.Locale;
-
-public class VersionTest {
- public static void main(String... args) {
- Locale prev = Locale.getDefault();
- try {
- Locale.setDefault(Locale.ENGLISH);
- System.err.println(Locale.getDefault());
- test("-version -XDsuppress-tool-removal-message", "\\S+ version \"\\S+\"");
- test("-fullversion -XDsuppress-tool-removal-message", "\\S+ full version \"\\S+\"");
- } finally {
- Locale.setDefault(prev);
- }
- }
-
- static void test(String option, String regex) {
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- String[] args = option.split(" ");
- int rc = com.sun.tools.javah.Main.run(args, pw);
- pw.close();
- if (rc != 0)
- throw new Error("javah failed: rc=" + rc);
- String out = sw.toString().trim();
- System.err.println(out);
- if (!out.matches(regex))
- throw new Error("output does not match pattern: " + regex);
- }
-}
--- a/test/langtools/tools/javah/constMacroTest/ConstMacroTest.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 2013, 2016, 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.
- *
- * 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.
- */
-
-/*
- * @test
- * @bug 4786406 4781221 4780341 6214324
- * @summary Validates rewritten javah handling of class defined constants and
- * ensures that the appropriate macro definitions are placed in the generated
- * header file.
- * @library /tools/lib
- * @modules jdk.compiler/com.sun.tools.javac.api
- * jdk.compiler/com.sun.tools.javac.main
- * jdk.compiler/com.sun.tools.javah
- * @build toolbox.ToolBox toolbox.JavahTask
- * @run main ConstMacroTest
- */
-
-import java.io.*;
-import java.util.List;
-
-import toolbox.JavahTask;
-import toolbox.ToolBox;
-
-// Original test: test/tools/javah/ConstMacroTest.sh
-public class ConstMacroTest {
-
- private static final String subClassConstsGoldenFileTemplate =
- "/* DO NOT EDIT THIS FILE - it is machine generated */\n" +
- "#include <jni.h>\n" +
- "/* Header for class SubClassConsts */\n" +
- "\n" +
- "#ifndef _Included_SubClassConsts\n" +
- "#define _Included_SubClassConsts\n" +
- "#ifdef __cplusplus\n" +
- "extern \"C\" {\n" +
- "#endif\n" +
- "#undef SubClassConsts_serialVersionUID\n" +
- "#define SubClassConsts_serialVersionUID 6733861379283244755%s\n" +
- "#undef SubClassConsts_SUPER_INT_CONSTANT\n" +
- "#define SubClassConsts_SUPER_INT_CONSTANT 3L\n" +
- "#undef SubClassConsts_SUPER_FLOAT_CONSTANT\n" +
- "#define SubClassConsts_SUPER_FLOAT_CONSTANT 99.3f\n" +
- "#undef SubClassConsts_SUPER_DOUBLE_CONSTANT\n" +
- "#define SubClassConsts_SUPER_DOUBLE_CONSTANT 33.2\n" +
- "#undef SubClassConsts_SUPER_BOOLEAN_CONSTANT\n" +
- "#define SubClassConsts_SUPER_BOOLEAN_CONSTANT 0L\n" +
- "#undef SubClassConsts_SUB_INT_CONSTANT\n" +
- "#define SubClassConsts_SUB_INT_CONSTANT 2L\n" +
- "#undef SubClassConsts_SUB_DOUBLE_CONSTANT\n" +
- "#define SubClassConsts_SUB_DOUBLE_CONSTANT 2.25\n" +
- "#undef SubClassConsts_SUB_FLOAT_CONSTANT\n" +
- "#define SubClassConsts_SUB_FLOAT_CONSTANT 7.9f\n" +
- "#undef SubClassConsts_SUB_BOOLEAN_CONSTANT\n" +
- "#define SubClassConsts_SUB_BOOLEAN_CONSTANT 1L\n" +
- "#ifdef __cplusplus\n" +
- "}\n" +
- "#endif\n" +
- "#endif";
-
- public static void main(String[] args) throws Exception {
- ToolBox tb = new ToolBox();
-
- new JavahTask(tb)
- .classpath(ToolBox.testClasses)
- .classes("SubClassConsts")
- .run();
-
- String longSuffix = tb.isWindows() ? "i64" : "LL";
- List<String> subClassConstsGoldenFile = tb.split(
- String.format(subClassConstsGoldenFileTemplate, longSuffix), "\n");
-
- List<String> subClassConstsFile = tb.readAllLines("SubClassConsts.h");
-
- tb.checkEqual(subClassConstsFile, subClassConstsGoldenFile);
- }
-
-}
-
-class SuperClassConsts implements Serializable {
- // Define class constant values, base class is serializable
- private static final long serialVersionUID = 6733861379283244755L;
- public static final int SUPER_INT_CONSTANT = 3;
- public final static float SUPER_FLOAT_CONSTANT = 99.3f;
- public final static double SUPER_DOUBLE_CONSTANT = 33.2;
- public final static boolean SUPER_BOOLEAN_CONSTANT = false;
- // A token instance field
- int instanceField;
-
- public native int numValues();
-}
-
-class SubClassConsts extends SuperClassConsts {
- private final static int SUB_INT_CONSTANT = 2;
- private final static double SUB_DOUBLE_CONSTANT = 2.25;
- private final static float SUB_FLOAT_CONSTANT = 7.90f;
- private final static boolean SUB_BOOLEAN_CONSTANT = true;
-}
--- a/test/langtools/tools/lib/toolbox/JavahTask.java Wed Dec 13 14:23:34 2017 -0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/*
- * Copyright (c) 2013, 2016, 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.
- *
- * 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 toolbox;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A task to configure and run the native header tool, javah.
- */
-public class JavahTask extends AbstractTask<JavahTask> {
- private String classpath;
- private List<String> options;
- private List<String> classes;
-
- /**
- * Create a task to execute {@code javah} using {@code CMDLINE} mode.
- * @param toolBox the {@code ToolBox} to use
- */
- public JavahTask(ToolBox toolBox) {
- super(toolBox, Task.Mode.CMDLINE);
- }
-
- /**
- * Sets the classpath.
- * @param classpath the classpath
- * @return this task object
- */
- public JavahTask classpath(String classpath) {
- this.classpath = classpath;
- return this;
- }
-
- /**
- * Sets the options.
- * @param options the options
- * @return this task object
- */
- public JavahTask options(String... options) {
- this.options = Arrays.asList(options);
- return this;
- }
-
- /**
- * Sets the classes to be analyzed.
- * @param classes the classes
- * @return this task object
- */
- public JavahTask classes(String... classes) {
- this.classes = Arrays.asList(classes);
- return this;
- }
-
- /**
- * {@inheritDoc}
- * @return the name "javah"
- */
- @Override
- public String name() {
- return "javah";
- }
-
- /**
- * Calls the javah tool with the arguments as currently configured.
- * @return a Result object indicating the outcome of the task
- * and the content of any output written to stdout, stderr, or the
- * main stream provided to the task.
- * @throws TaskError if the outcome of the task is not as expected.
- */
- @Override
- public Task.Result run() {
- List<String> args = new ArrayList<>();
- if (options != null)
- args.addAll(options);
- if (classpath != null) {
- args.add("-classpath");
- args.add(classpath);
- }
- if (classes != null)
- args.addAll(classes);
-
- AbstractTask.WriterOutput direct = new AbstractTask.WriterOutput();
- // These are to catch output to System.out and System.err,
- // in case these are used instead of the primary streams
- AbstractTask.StreamOutput sysOut = new AbstractTask.StreamOutput(System.out, System::setOut);
- AbstractTask.StreamOutput sysErr = new AbstractTask.StreamOutput(System.err, System::setErr);
- int rc;
- Map<Task.OutputKind, String> outputMap = new HashMap<>();
- try {
- rc = com.sun.tools.javah.Main.run(args.toArray(new String[args.size()]), direct.pw);
- } finally {
- outputMap.put(Task.OutputKind.STDOUT, sysOut.close());
- outputMap.put(Task.OutputKind.STDERR, sysErr.close());
- outputMap.put(Task.OutputKind.DIRECT, direct.close());
- }
- return checkExit(new Task.Result(toolBox, this, rc, outputMap));
- }
-}