[jboss-cvs] javassist/src/main/javassist/util/proxy ...

Shigeru Chiba chiba at is.titech.ac.jp
Sat Jun 2 22:33:47 EDT 2007


  User: chiba   
  Date: 07/06/02 22:33:47

  Modified:    src/main/javassist/util/proxy  ProxyFactory.java
  Log:
  made the java.util.proxy package support stack map tables.
  
  Revision  Changes    Path
  1.24      +19 -6     javassist/src/main/javassist/util/proxy/ProxyFactory.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: ProxyFactory.java
  ===================================================================
  RCS file: /cvsroot/jboss/javassist/src/main/javassist/util/proxy/ProxyFactory.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -b -r1.23 -r1.24
  --- ProxyFactory.java	7 Nov 2006 14:06:00 -0000	1.23
  +++ ProxyFactory.java	3 Jun 2007 02:33:47 -0000	1.24
  @@ -764,19 +764,26 @@
   
           code.addAload(0);
           code.addGetstatic(thisClassName, DEFAULT_INTERCEPTOR, HANDLER_TYPE);
  -        code.addOpcode(Opcode.DUP);
  +        code.addPutfield(thisClassName, HANDLER, HANDLER_TYPE);
  +        code.addGetstatic(thisClassName, DEFAULT_INTERCEPTOR, HANDLER_TYPE);
           code.addOpcode(Opcode.IFNONNULL);
  -        code.addIndex(7);
  -        code.addOpcode(Opcode.POP);
  +        code.addIndex(10);
  +        code.addAload(0);
           code.addGetstatic(NULL_INTERCEPTOR_HOLDER, DEFAULT_INTERCEPTOR, HANDLER_TYPE);
           code.addPutfield(thisClassName, HANDLER, HANDLER_TYPE);
  +        int pc = code.currentPc();
   
           code.addAload(0);
           int s = addLoadParameters(code, cons.getParameterTypes(), 1);
           code.addInvokespecial(superClass.getName(), "<init>", desc);
           code.addOpcode(Opcode.RETURN);
           code.setMaxLocals(s + 1);
  -        minfo.setCodeAttribute(code.toCodeAttribute());
  +        CodeAttribute ca = code.toCodeAttribute();
  +        minfo.setCodeAttribute(ca);
  +
  +        StackMapTable.Writer writer = new StackMapTable.Writer(32);
  +        writer.sameFrame(pc);
  +        ca.setAttribute(writer.toStackMapTable(cp));
           return minfo;
       }
   
  @@ -840,7 +847,8 @@
           callFindMethod(code, "findSuperMethod", arrayVar, origIndex, meth.getName(), desc);
           callFindMethod(code, "findMethod", arrayVar, delIndex, delegatorName, desc);
   
  -        code.write16bit(pc, code.currentPc() - pc + 1);
  +        int pc2 = code.currentPc();
  +        code.write16bit(pc, pc2 - pc + 1);
           code.addAload(0);
           code.addGetfield(thisClassName, HANDLER, HANDLER_TYPE);
           code.addAload(0);
  @@ -861,7 +869,12 @@
           addUnwrapper(code, retType);
           addReturn(code, retType);
   
  -        forwarder.setCodeAttribute(code.toCodeAttribute());
  +        CodeAttribute ca = code.toCodeAttribute();
  +        forwarder.setCodeAttribute(ca);
  +        StackMapTable.Writer writer = new StackMapTable.Writer(32);
  +        writer.appendFrame(pc2, new int[] { StackMapTable.OBJECT },
  +                           new int[] { cp.addClassInfo(HOLDER_TYPE) });
  +        ca.setAttribute(writer.toStackMapTable(cp));
           return forwarder;
       }
   
  
  
  



More information about the jboss-cvs-commits mailing list