List of usage examples for org.eclipse.jdt.internal.compiler.classfmt ClassFileConstants ATTR_STACK_MAP_TABLE
int ATTR_STACK_MAP_TABLE
To view the source code for org.eclipse.jdt.internal.compiler.classfmt ClassFileConstants ATTR_STACK_MAP_TABLE.
Click Source Link
From source file:org.eclipse.objectteams.otdt.internal.core.compiler.lookup.SyntheticRoleFieldAccess.java
License:Open Source License
public void generateBodyForRead(FieldBinding fieldBinding, CodeStream codeStream) { if (fieldBinding.isStatic()) { fieldBinding = checkAdjustRoleFieldAccess(fieldBinding, codeStream); // may insert cast, too. codeStream.fieldAccess(Opcodes.OPC_getstatic, fieldBinding, fieldBinding.declaringClass); // FIXME(SH): throw new InternalCompilerError("accessor for static field not applicable."); } else {//from w ww. ja v a 2 s .co m // prepare "this" and role args: LocalVariableBinding thisArg = createArgumentBinding(codeStream, "this".toCharArray(), //$NON-NLS-1$ fieldBinding.declaringClass.enclosingType(), 0); char[] argName = typeNameToLower(this.parameters[0].sourceName()); LocalVariableBinding arg1 = createArgumentBinding(codeStream, argName, this.parameters[0], 1); // generate code: codeStream.aload_1(); // not a static accessor, positions shifted by 1. fieldBinding = checkAdjustRoleFieldAccess(fieldBinding, codeStream); // may insert cast, too. codeStream.fieldAccess(Opcodes.OPC_getfield, fieldBinding, fieldBinding.declaringClass); // finish args: if ((codeStream.generateAttributes & (ClassFileConstants.ATTR_VARS | ClassFileConstants.ATTR_STACK_MAP_TABLE | ClassFileConstants.ATTR_STACK_MAP)) == 0) return; // avoid NPE below thisArg.recordInitializationEndPC(codeStream.position); arg1.recordInitializationEndPC(codeStream.position); } }
From source file:org.eclipse.objectteams.otdt.internal.core.compiler.lookup.SyntheticRoleFieldAccess.java
License:Open Source License
public void generateBodyForWrite(FieldBinding fieldBinding, CodeStream codeStream) { if (fieldBinding.isStatic()) { fieldBinding = checkAdjustRoleFieldAccess(fieldBinding, codeStream); codeStream.load(fieldBinding.type, 1); codeStream.fieldAccess(Opcodes.OPC_putstatic, fieldBinding, fieldBinding.declaringClass); } else {// w w w. j a v a2s. c om // prepare "this" and role args: LocalVariableBinding thisArg = createArgumentBinding(codeStream, "this".toCharArray(), //$NON-NLS-1$ fieldBinding.declaringClass.enclosingType(), 0); char[] argName = typeNameToLower(this.parameters[0].sourceName()); LocalVariableBinding arg1 = createArgumentBinding(codeStream, argName, this.parameters[0], 1); LocalVariableBinding arg2 = createArgumentBinding(codeStream, "value".toCharArray(), this.parameters[1], //$NON-NLS-1$ 2); codeStream.aload_1(); // not a static accessor, positions shifted by 1. fieldBinding = checkAdjustRoleFieldAccess(fieldBinding, codeStream); codeStream.load(fieldBinding.type, 2); codeStream.fieldAccess(Opcodes.OPC_putfield, fieldBinding, fieldBinding.declaringClass); // finish args: if ((codeStream.generateAttributes & (ClassFileConstants.ATTR_VARS | ClassFileConstants.ATTR_STACK_MAP_TABLE | ClassFileConstants.ATTR_STACK_MAP)) == 0) return; // avoid NPE below thisArg.recordInitializationEndPC(codeStream.position); arg1.recordInitializationEndPC(codeStream.position); arg2.recordInitializationEndPC(codeStream.position); } }