compilerinlinetest.java
来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 108 行
JAVA
108 行
/*
* $Id: CompilerInlineTest.java,v 1.2 2004/02/26 10:33:49 epr Exp $
*/
package org.jnode.test;
import java.io.File;
import java.io.PrintWriter;
import org.jnode.assembler.NativeStream;
import org.jnode.assembler.ObjectResolver;
import org.jnode.assembler.x86.TextX86Stream;
import org.jnode.vm.VmSystemClassLoader;
import org.jnode.vm.classmgr.VmClassLoader;
import org.jnode.vm.classmgr.VmMethod;
import org.jnode.vm.classmgr.VmType;
import org.jnode.vm.compiler.CompiledMethod;
import org.jnode.vm.compiler.CompilerBytecodeViewer;
import org.jnode.vm.compiler.CompilerBytecodeVisitor;
import org.jnode.vm.compiler.InliningBytecodeVisitor;
import org.jnode.vm.compiler.NativeCodeCompiler;
import org.jnode.vm.x86.VmX86Architecture;
import org.jnode.vm.x86.X86CpuID;
/**
* @author Ewout Prangsma (epr@users.sourceforge.net)
*/
public class CompilerInlineTest {
public static void main(String[] args) throws Exception {
final String clsName = InlineTestClass.class.getName();
final VmSystemClassLoader cl = new VmSystemClassLoader(new File(".")
.toURL(), new VmX86Architecture());
VmType.initializeForBootImage(cl);
final VmType type = cl.loadClass(clsName, true);
// Now inline the foo method
final VmMethod method = type.getMethod("foo", "()V");
TestCompiler cmp = new TestCompiler(cl);
try {
cmp.compileBootstrap(method, cmp.createNativeStream(null), 0);
} catch (NullPointerException ex) {
// I know, just ignore
//ex.printStackTrace();
}
}
static class TestCompiler extends NativeCodeCompiler {
private final VmClassLoader loader;
public TestCompiler(VmClassLoader loader) {
this.loader = loader;
}
/**
* @see org.jnode.vm.compiler.NativeCodeCompiler#createBytecodeVisitor(org.jnode.vm.classmgr.VmMethod,
* org.jnode.vm.compiler.CompiledMethod,
* org.jnode.assembler.NativeStream, int, boolean)
*/
protected CompilerBytecodeVisitor createBytecodeVisitor(
VmMethod method, CompiledMethod cm, NativeStream os, int level,
boolean isBootstrap) {
return new InliningBytecodeVisitor(new CompilerBytecodeViewer(),
loader);
}
/**
* @see org.jnode.vm.compiler.NativeCodeCompiler#createNativeStream(org.jnode.assembler.ObjectResolver)
*/
public NativeStream createNativeStream(ObjectResolver resolver) {
return new TextX86Stream(new PrintWriter(System.out), X86CpuID
.createID(null));
}
/**
* @see org.jnode.vm.compiler.NativeCodeCompiler#doCompileAbstract(org.jnode.vm.classmgr.VmMethod,
* org.jnode.assembler.NativeStream, int, boolean)
*/
protected CompiledMethod doCompileAbstract(VmMethod method,
NativeStream os, int level, boolean isBootstrap) {
return null;
}
/**
* @see org.jnode.vm.compiler.NativeCodeCompiler#dumpStatistics()
*/
public void dumpStatistics() {
}
/**
* @see org.jnode.vm.compiler.NativeCodeCompiler#initialize(org.jnode.vm.classmgr.VmClassLoader)
*/
public void initialize(VmClassLoader loader) {
}
/**
* @see org.jnode.vm.compiler.NativeCodeCompiler#getMagic()
*/
public final int getMagic() {
return -1;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?