本文整理了Java中serp.bytecode.BCClass.declareMethod()
方法的一些代码示例,展示了BCClass.declareMethod()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。BCClass.declareMethod()
方法的具体详情如下:
包路径:serp.bytecode.BCClass
类名称:BCClass
方法名:declareMethod
[英]Add a method to this class. Note that in bytecode, constructors are named <init>
and static initializers are named <clinit>
.
[中]将方法添加到此类。请注意,在字节码中,构造函数名为<init>
,静态初始值设定项名为<clinit>
。
代码示例来源:origin: org.apache.openjpa/openjpa-all
private void addGetData(BCClass bc) {
// return getObjectField(i);
BCMethod method = bc.declareMethod("getData", Object.class,
new Class[]{ int.class });
Code code = method.getCode(true);
code.aload().setThis();
code.iload().setParam(0);
code.invokevirtual().setMethod("getObject", Object.class,
new Class[]{ int.class });
code.areturn();
code.calculateMaxLocals();
code.calculateMaxStack();
}
代码示例来源:origin: org.apache.openjpa/openjpa-kernel
private void addGetData(BCClass bc) {
// return getObjectField(i);
BCMethod method = bc.declareMethod("getData", Object.class,
new Class[]{ int.class });
Code code = method.getCode(true);
code.aload().setThis();
code.iload().setParam(0);
code.invokevirtual().setMethod("getObject", Object.class,
new Class[]{ int.class });
code.areturn();
code.calculateMaxLocals();
code.calculateMaxStack();
}
代码示例来源:origin: org.apache.openejb.patch/openjpa-kernel
private void addGetData(BCClass bc) {
// return getObjectField(i);
BCMethod method = bc.declareMethod("getData", Object.class,
new Class[]{ int.class });
Code code = method.getCode(true);
code.aload().setThis();
code.iload().setParam(0);
code.invokevirtual().setMethod("getObject", Object.class,
new Class[]{ int.class });
code.areturn();
code.calculateMaxLocals();
code.calculateMaxStack();
}
代码示例来源:origin: org.apache.openjpa/com.springsource.org.apache.openjpa
private void addGetData(BCClass bc) {
// return getObjectField(i);
BCMethod method = bc.declareMethod("getData", Object.class,
new Class[]{ int.class });
Code code = method.getCode(true);
code.aload().setThis();
code.iload().setParam(0);
code.invokevirtual().setMethod("getObject", Object.class,
new Class[]{ int.class });
code.areturn();
code.calculateMaxLocals();
code.calculateMaxStack();
}
代码示例来源:origin: org.apache.openejb.patch/openjpa
private void addGetData(BCClass bc) {
// return getObjectField(i);
BCMethod method = bc.declareMethod("getData", Object.class,
new Class[]{ int.class });
Code code = method.getCode(true);
code.aload().setThis();
code.iload().setParam(0);
code.invokevirtual().setMethod("getObject", Object.class,
new Class[]{ int.class });
code.areturn();
code.calculateMaxLocals();
code.calculateMaxStack();
}
代码示例来源:origin: org.apache.openjpa/openjpa-all
/**
* Proxy the given method with one that overrides it by calling into the
* given helper.
*/
private void proxyOverrideMethod(BCClass bc, Method meth,
Method helper, Class[] params) {
BCMethod m = bc.declareMethod(meth.getName(), meth.getReturnType(),
meth.getParameterTypes());
m.makePublic();
Code code = m.getCode(true);
code.aload().setThis();
for (int i = 1; i < params.length; i++)
code.xload().setParam(i - 1).setType(params[i]);
code.invokestatic().setMethod(helper);
code.xreturn().setType(meth.getReturnType());
code.calculateMaxStack();
code.calculateMaxLocals();
}
代码示例来源:origin: org.apache.openejb.patch/openjpa-kernel
/**
* Proxy the given method with one that overrides it by calling into the
* given helper.
*/
private void proxyOverrideMethod(BCClass bc, Method meth,
Method helper, Class[] params) {
BCMethod m = bc.declareMethod(meth.getName(), meth.getReturnType(),
meth.getParameterTypes());
m.makePublic();
Code code = m.getCode(true);
code.aload().setThis();
for (int i = 1; i < params.length; i++)
code.xload().setParam(i - 1).setType(params[i]);
code.invokestatic().setMethod(helper);
code.xreturn().setType(meth.getReturnType());
code.calculateMaxStack();
code.calculateMaxLocals();
}
代码示例来源:origin: org.apache.openejb.patch/openjpa
/**
* Proxy the given method with one that overrides it by calling into the
* given helper.
*/
private void proxyOverrideMethod(BCClass bc, Method meth,
Method helper, Class[] params) {
BCMethod m = bc.declareMethod(meth.getName(), meth.getReturnType(),
meth.getParameterTypes());
m.makePublic();
Code code = m.getCode(true);
code.aload().setThis();
for (int i = 1; i < params.length; i++)
code.xload().setParam(i - 1).setType(params[i]);
code.invokestatic().setMethod(helper);
code.xreturn().setType(meth.getReturnType());
code.calculateMaxStack();
code.calculateMaxLocals();
}
代码示例来源:origin: org.apache.openjpa/openjpa-all
/**
* Add method which defers to AbstractPCData.
*/
protected void callAbstractPCData(BCClass bc, String name, Class<?> retType,
Class<?>[] args) {
BCMethod meth = bc.declareMethod(name, retType, args);
Code code = meth.getCode(true);
code.aload().setThis();
for (int i = 0; i < args.length; i++)
code.xload().setParam(i).setType(args[i]);
code.invokevirtual().setMethod(AbstractPCData.class, name, retType,
args);
if (!void.class.equals(retType))
code.xreturn().setType(retType);
code.calculateMaxLocals();
code.calculateMaxStack();
}
代码示例来源:origin: org.apache.openjpa/com.springsource.org.apache.openjpa
private void replaceNewEmbeddedPCData(BCClass bc) {
BCMethod meth = bc.declareMethod("newEmbeddedPCData",
AbstractPCData.class, new Class[]{ OpenJPAStateManager.class });
Code code = meth.getCode(true);
// return new DataCachePCDataImpl(sm.getObjectId(), sm.getMetaData());
code.anew().setType(DataCachePCDataImpl.class);
code.dup();
code.aload().setParam(0);
code.invokeinterface().setMethod(OpenJPAStateManager.class, "getId",
Object.class, null);
code.aload().setParam(0);
code.invokeinterface().setMethod(OpenJPAStateManager.class,
"getMetaData", ClassMetaData.class, null);
code.invokespecial().setMethod(DataCachePCDataImpl.class, "<init>",
void.class, new Class[] { Object.class, ClassMetaData.class });
code.areturn();
code.calculateMaxLocals();
code.calculateMaxStack();
}
代码示例来源:origin: org.apache.openejb.patch/openjpa-kernel
/**
* Add method which defers to AbstractPCData.
*/
protected void callAbstractPCData(BCClass bc, String name, Class<?> retType,
Class<?>[] args) {
BCMethod meth = bc.declareMethod(name, retType, args);
Code code = meth.getCode(true);
code.aload().setThis();
for (int i = 0; i < args.length; i++)
code.xload().setParam(i).setType(args[i]);
code.invokevirtual().setMethod(AbstractPCData.class, name, retType,
args);
if (!void.class.equals(retType))
code.xreturn().setType(retType);
code.calculateMaxLocals();
code.calculateMaxStack();
}
代码示例来源:origin: org.apache.openjpa/openjpa-kernel
/**
* Proxy the given method with one that overrides it by calling into the
* given helper.
*/
private void proxyOverrideMethod(BCClass bc, Method meth,
Method helper, Class[] params) {
BCMethod m = bc.declareMethod(meth.getName(), meth.getReturnType(),
meth.getParameterTypes());
m.makePublic();
Code code = m.getCode(true);
code.aload().setThis();
for (int i = 1; i < params.length; i++)
code.xload().setParam(i - 1).setType(params[i]);
code.invokestatic().setMethod(helper);
code.xreturn().setType(meth.getReturnType());
code.calculateMaxStack();
code.calculateMaxLocals();
}
代码示例来源:origin: org.apache.openjpa/com.springsource.org.apache.openjpa
/**
* Proxy the given method with one that overrides it by calling into the
* given helper.
*/
private void proxyOverrideMethod(BCClass bc, Method meth,
Method helper, Class[] params) {
BCMethod m = bc.declareMethod(meth.getName(), meth.getReturnType(),
meth.getParameterTypes());
m.makePublic();
Code code = m.getCode(true);
code.aload().setThis();
for (int i = 1; i < params.length; i++)
code.xload().setParam(i - 1).setType(params[i]);
code.invokestatic().setMethod(helper);
code.xreturn().setType(meth.getReturnType());
code.calculateMaxStack();
code.calculateMaxLocals();
}
代码示例来源:origin: org.apache.openjpa/com.springsource.org.apache.openjpa
/**
* Add method which defers to AbstractPCData.
*/
protected void callAbstractPCData(BCClass bc, String name, Class retType,
Class[] args) {
BCMethod meth = bc.declareMethod(name, retType, args);
Code code = meth.getCode(true);
code.aload().setThis();
for (int i = 0; i < args.length; i++)
code.xload().setParam(i).setType(args[i]);
code.invokevirtual().setMethod(AbstractPCData.class, name, retType,
args);
if (!void.class.equals(retType))
code.xreturn().setType(retType);
code.calculateMaxLocals();
code.calculateMaxStack();
}
代码示例来源:origin: org.apache.openejb.patch/openjpa
/**
* Add method which defers to AbstractPCData.
*/
protected void callAbstractPCData(BCClass bc, String name, Class<?> retType,
Class<?>[] args) {
BCMethod meth = bc.declareMethod(name, retType, args);
Code code = meth.getCode(true);
code.aload().setThis();
for (int i = 0; i < args.length; i++)
code.xload().setParam(i).setType(args[i]);
code.invokevirtual().setMethod(AbstractPCData.class, name, retType,
args);
if (!void.class.equals(retType))
code.xreturn().setType(retType);
code.calculateMaxLocals();
code.calculateMaxStack();
}
代码示例来源:origin: org.apache.openjpa/openjpa-kernel
private void addNewEmbedded(BCClass bc) {
// void newEmbeddedPCData(OpenJPAStateManager embedded)
BCMethod meth = bc.declareMethod("newEmbeddedPCData", PCData.class,
new Class[]{ OpenJPAStateManager.class });
Code code = meth.getCode(true);
// return getStorageGenerator().generatePCData
// (sm.getId(), sm.getMetaData());
code.aload().setThis();
code.getfield().setField("storageGenerator", PCDataGenerator.class);
code.aload().setParam(0);
code.invokeinterface().setMethod(OpenJPAStateManager.class,
"getId", Object.class, null);
code.aload().setParam(0);
code.invokeinterface().setMethod(OpenJPAStateManager.class,
"getMetaData", ClassMetaData.class, null);
code.invokevirtual().setMethod(PCDataGenerator.class,
"generatePCData", PCData.class, new Class[]
{ Object.class, ClassMetaData.class });
code.areturn();
code.calculateMaxLocals();
code.calculateMaxStack();
}
代码示例来源:origin: org.apache.openjpa/openjpa-all
private void replaceNewEmbeddedPCData(BCClass bc) {
BCMethod meth = bc.declareMethod("newEmbeddedPCData",
AbstractPCData.class, new Class[]{ OpenJPAStateManager.class });
Code code = meth.getCode(true);
// return new DataCachePCDataImpl(sm.getObjectId(), sm.getMetaData());
code.anew().setType(DataCachePCDataImpl.class);
code.dup();
code.aload().setParam(0);
code.invokeinterface().setMethod(OpenJPAStateManager.class, "getId",
Object.class, null);
code.aload().setParam(0);
code.invokeinterface().setMethod(OpenJPAStateManager.class,
"getMetaData", ClassMetaData.class, null);
code.invokespecial().setMethod(DataCachePCDataImpl.class, "<init>",
void.class, new Class[] { Object.class, ClassMetaData.class });
code.areturn();
code.calculateMaxLocals();
code.calculateMaxStack();
}
代码示例来源:origin: org.apache.openejb.patch/openjpa-kernel
private void replaceNewEmbeddedPCData(BCClass bc) {
BCMethod meth = bc.declareMethod("newEmbeddedPCData",
AbstractPCData.class, new Class[]{ OpenJPAStateManager.class });
Code code = meth.getCode(true);
// return new DataCachePCDataImpl(sm.getObjectId(), sm.getMetaData());
code.anew().setType(DataCachePCDataImpl.class);
code.dup();
code.aload().setParam(0);
code.invokeinterface().setMethod(OpenJPAStateManager.class, "getId",
Object.class, null);
code.aload().setParam(0);
code.invokeinterface().setMethod(OpenJPAStateManager.class,
"getMetaData", ClassMetaData.class, null);
code.invokespecial().setMethod(DataCachePCDataImpl.class, "<init>",
void.class, new Class[] { Object.class, ClassMetaData.class });
code.areturn();
code.calculateMaxLocals();
code.calculateMaxStack();
}
代码示例来源:origin: org.apache.openejb.patch/openjpa
private void replaceNewEmbeddedPCData(BCClass bc) {
BCMethod meth = bc.declareMethod("newEmbeddedPCData",
AbstractPCData.class, new Class[]{ OpenJPAStateManager.class });
Code code = meth.getCode(true);
// return new DataCachePCDataImpl(sm.getObjectId(), sm.getMetaData());
code.anew().setType(DataCachePCDataImpl.class);
code.dup();
code.aload().setParam(0);
code.invokeinterface().setMethod(OpenJPAStateManager.class, "getId",
Object.class, null);
code.aload().setParam(0);
code.invokeinterface().setMethod(OpenJPAStateManager.class,
"getMetaData", ClassMetaData.class, null);
code.invokespecial().setMethod(DataCachePCDataImpl.class, "<init>",
void.class, new Class[] { Object.class, ClassMetaData.class });
code.areturn();
code.calculateMaxLocals();
code.calculateMaxStack();
}
代码示例来源:origin: org.apache.openjpa/openjpa-kernel
/**
* Add method which defers to AbstractPCData.
*/
protected void callAbstractPCData(BCClass bc, String name, Class<?> retType,
Class<?>[] args) {
BCMethod meth = bc.declareMethod(name, retType, args);
Code code = meth.getCode(true);
code.aload().setThis();
for (int i = 0; i < args.length; i++)
code.xload().setParam(i).setType(args[i]);
code.invokevirtual().setMethod(AbstractPCData.class, name, retType,
args);
if (!void.class.equals(retType))
code.xreturn().setType(retType);
code.calculateMaxLocals();
code.calculateMaxStack();
}
内容来源于网络,如有侵权,请联系作者删除!