jakarta-bcel-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Juozas Baliuka" <bali...@mwm.lt>
Subject Re: Struggling with understanding indexes...
Date Fri, 31 Jan 2003 15:55:17 GMT

yes, it is true, you need 2 index spaces for double and long, but 1 for
float, int, ...,object and "special" types.

> Ah ha! Does this mean I need to allow 2 index spaces for double and long
> as well? This seems to be the case, when I tried it in my code and it
> the problem went away.
>
> Thanks,
> -Mark
>
> Juozas Baliuka wrote:
> > double and long use two registers.
> >
> >
> >
> >>do you have problems with long and double type ?
> >>
> >>
> >>
> >>>Thanks,
> >>>
> >>>Would the following stack trace be related to these indexes? I'm
> >>>assuming that Registers are analogous to entries in the index? Whould
> >>>this be correct?
> >>>
> >>>java.lang.VerifyError: (class: foo/bar/NewTestBean, method: testMethod
> >>>signature: (DI)D) Register 2 contains wrong type
> >>>         at java.lang.Class.getDeclaredConstructors0(Native Method)
> >>>         at
> >>
> >>java.lang.Class.privateGetDeclaredConstructors(Class.java:1576)
> >>
> >>>         at java.lang.Class.getConstructor0(Class.java:1748)
> >>>         at java.lang.Class.newInstance0(Class.java:266)
> >>>         at java.lang.Class.newInstance(Class.java:249)
> >>>         at
> >>>
> >>
> >
org.apache.commons.jelly.tags.bcel.BsfClassExtender.main(BsfClassExtender.ja
> >
> >>va:194)
> >>
> >>>Exception in thread "main"
> >>>
> >>>
> >>>-Mark
> >>>
> >>>Bob Lee wrote:
> >>>
> >>>>You are correct. I'm pretty sure the indexes work like this (I
> >>>>personally use Javassist):
> >>>>
> >>>>Static method:
> >>>>0..n: arguments.
> >>>>n+1..m: local variables.
> >>>>
> >>>>Instance method:
> >>>>0: this
> >>>>1..n: arguments.
> >>>>n+1..m: local variables.
> >>>>
> >>>>"load" pushes the variable at that index on to the stack.
> >>>>"store" pops the top value off of the stack and stores it in the
> >>>>specified index.
> >>>>
> >>>>Thanks,
> >>>>Bob
> >>>>
> >>>>On Thursday, January 30, 2003, at 07:54 PM, Mark R. Diggory wrote:
> >>>>
> >>>>
> >>>>>Hi,
> >>>>>
> >>>>>I currently have this code fragment
> >>>>>
> >>>>>*
> >>>>>Integer xyz = new Integer(foo);
> >>>>>manager.declareBean("foo", xyz, xyz.getClass());
> >>>>>*
> >>>>>
> >>>>>Which I use BCELLifier on to get the following section of BCEL code:
> >>>>>
> >>>>>InstructionHandle ih_14 =
> >>>>>il.append(_factory.createNew("java.lang.Integer"));
> >>>>>il.append(InstructionConstants.DUP);
> >>>>>il.append(_factory.createLoad(Type.INT, 1));
> >>>>>il.append(_factory.createInvoke("java.lang.Integer",
> >>>>>"<init>",Type.VOID,new Type[] { Type.INT },
> >
> > Constants.INVOKESPECIAL));
> >
> >>>>>il.append(_factory.createStore(Type.OBJECT, 3));
> >>>>>InstructionHandle ih_23 = il.append(_factory.createLoad(Type.OBJECT,
> >>>>>0));
> >>>>>
> >
> > il.append(_factory.createFieldAccess("org.apache.commons.jelly.tags.bce
> >
> >>>>>l.Test","manager",new ObjectType("com.ibm.bsf.BSFManager"),
> >>>>>Constants.GETFIELD));
> >>>>>il.append(new PUSH(_cp, "foo"));
> >>>>>il.append(_factory.createLoad(Type.OBJECT, 3));
> >>>>>il.append(_factory.createLoad(Type.OBJECT, 3));
> >>>>>il.append(_factory.createInvoke("java.lang.Object", "getClass", new
> >>>>>ObjectType("java.lang.Class"), Type.NO_ARGS, >
> >>
> >>Constants.INVOKEVIRTUAL));
> >>
> >>>>>il.append(_factory.createInvoke("com.ibm.bsf.BSFManager",
> >>>>>"declareBean",Type.VOID, new Type[] { Type.STRING, Type.OBJECT, new
> >>>>>ObjectType("java.lang.Class") }, Constants.INVOKEVIRTUAL));
> >>>>>
> >>>>>
> >>>>>Specifically, I'm struggling with some issues where I don't quite
> >>>>>understand what the indexes are for in situations like
> >>>>>
> >>>>>_factory.createStore(Type.OBJECT, 3)
> >>>>>
> >>>>>and
> >>>>>
> >>>>>_factory.createLoad(Type.OBJECT, 3)
> >>>>>
> >>>>>am I right in assuming that there are a set number of "indexes"
> >>>>>representing positions in the InstructionList and that these above
> >>>>>references represent the setting and getting of Object references
in
> >>>>>that list?
> >>>>>
> >>>>>I'm struggling because I'm trying to make the code more "iterative"
> >>>>>where I might iterate over a "set" of handlers/append statements
to
> >>>>>append repeatedly to the instruction list (as an Example):
> >>>>>
> >>>>>for(int i = 0; i < argNames.length ; ){
> >>>>>
> >>>>>InstructionHandle ih_14 =
> >
> > il.append(_factory.createNew(argClasses[i]));
> >
> >>>>>...
> >>>>>il.append(_factory.createStore(Type.OBJECT, i));
> >>>>>...
> >>>>>il.append(new PUSH(_cp, argName[i]));
> >>>>>il.append(_factory.createLoad(Type.OBJECT, i));
> >>>>>il.append(_factory.createLoad(Type.OBJECT, i));
> >>>>>...
> >>>>>
> >>>>>}
> >>>>>
> >>>>>My problem is that I get actuall references that end up pointing
to
> >>>>>only the first argument. I'm hoping I understand what the indexes
are
> >>>>>for, but I'm hoping that you guy's can clarify this for me.
> >>>>>
> >>>>>Thanks,
> >>>>>-Mark Diggory
> >>>>>
> >>>>>
> >>>>>
> >>>>>---------------------------------------------------------------------
> >>>>>To unsubscribe, e-mail: bcel-user-unsubscribe@jakarta.apache.org
> >>>>>For additional commands, e-mail: bcel-user-help@jakarta.apache.org
> >>>>>
> >>>>
> >>>>
> >>>>---------------------------------------------------------------------
> >>>>To unsubscribe, e-mail: bcel-user-unsubscribe@jakarta.apache.org
> >>>>For additional commands, e-mail: bcel-user-help@jakarta.apache.org
> >>>>
> >>>
> >>>
> >>>---------------------------------------------------------------------
> >>>To unsubscribe, e-mail: bcel-user-unsubscribe@jakarta.apache.org
> >>>For additional commands, e-mail: bcel-user-help@jakarta.apache.org
> >>>
> >>
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: bcel-user-unsubscribe@jakarta.apache.org
> >>For additional commands, e-mail: bcel-user-help@jakarta.apache.org
> >>
> >>
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: bcel-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: bcel-user-help@jakarta.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: bcel-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: bcel-user-help@jakarta.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: bcel-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: bcel-user-help@jakarta.apache.org


Mime
View raw message