本文整理汇总了Java中com.sun.squawk.translator.ir.instr.FieldAccessor类的典型用法代码示例。如果您正苦于以下问题:Java FieldAccessor类的具体用法?Java FieldAccessor怎么用?Java FieldAccessor使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
FieldAccessor类属于com.sun.squawk.translator.ir.instr包,在下文中一共展示了FieldAccessor类的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: convertPhase1
import com.sun.squawk.translator.ir.instr.FieldAccessor; //导入依赖的package包/类
/**
* Convert the code of this method from its Java bytecode form to its
* Squawk bytecode form. This must only be called once and cannot be called
* for an abstract or native <code>Method</code>.
*
* @param translator the translation context
* @param method the method owning this code
* @param index the index of this method in the symbols table of the enclosing class
*/
private void convertPhase1(Translator translator, Method method, int index) {
try {
Assert.that(code != null, "code is null for " + method);
Klass declaringClass = method.getDefiningClass();
ClassFile cf = translator.getClassFile(declaringClass);
/*
* Write trace message.
*/
if (Translator.TRACING_ENABLED && Tracer.isTracing("converting", method.toString())) {
Tracer.traceln("[converting method " + method + "]");
}
/*
* Get or create the constant pool.
*/
ConstantPool constantPool;
if (code == SYNTHESIZED_DEFAULT_CONSTRUCTOR_CODE) {
constantPool = getConstantPoolForSynthesizedConstructor(translator, method.getDefiningClass());
code = getCodeForSynthesizedConstructor();
} else {
constantPool = cf.getConstantPool();
}
/*
* Ensure the parameter and return types are loaded.
*/
translator.load(method.getReturnType());
Klass[] parameterTypes = method.getParameterTypes();
for (int i = 0 ; i < parameterTypes.length ; i++) {
translator.load(parameterTypes[i]);
}
/*
* Get the code parser and build the IR.
*/
codeParser = new CodeParser(translator, method, code, constantPool);
irBuilder = new IRBuilder(translator, codeParser);
IR ir = irBuilder.getIR();
/*
* Add the object references into the table of constants.
*/
objectTable = new ObjectTable(declaringClass);
for (Instruction instruction = ir.getHead() ; instruction != null ; instruction = instruction.getNext()) {
Object object = instruction.getConstantObject();
if (object != null) {
if (instruction instanceof FieldAccessor) { // ignore special cases:
Klass fieldDefiningClass = ((FieldAccessor)instruction).getField().getDefiningClass();
if (fieldDefiningClass.hasGlobalStatics() || fieldDefiningClass == declaringClass) {
// getstatic/putstatic on global globals doesn't really use the class object table
// getstatic/putstatic on "this class" doesn't really use the class object table
continue;
}
}
objectTable.addConstantObject(object);
}
}
/*
* Transform the IR.
*/
IRTransformer transformer = new IRTransformer(ir, method, getFrame());
transformer.transform(translator);
} finally {
code = null; // Allow the code to be garbage collected
}
}