Author: hlship
Date: Wed Apr 13 22:23:31 2011
New Revision: 1091949

URL: http://svn.apache.org/viewvc?rev=1091949&view=rev
Log:
TAP5-853: Add a simple dupe() method to InstructionBuilder

Modified:
    
tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/InstructionBuilderImpl.java
    
tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
    
tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/InstructionBuilder.java
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java
    
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyShadowBuilderImpl.java

Modified: 
tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/InstructionBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/InstructionBuilderImpl.java?rev=1091949&r1=1091948&r2=1091949&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/InstructionBuilderImpl.java
 (original)
+++ 
tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/InstructionBuilderImpl.java
 Wed Apr 13 22:23:31 2011
@@ -419,6 +419,15 @@ public class InstructionBuilderImpl exte
         return this;
     }
 
+    public InstructionBuilder dupe()
+    {
+        check();
+
+        v.visitInsn(DUP);
+
+        return this;
+    }
+
     public InstructionBuilder pop()
     {
         check();
@@ -487,10 +496,10 @@ public class InstructionBuilderImpl exte
     {
         check();
 
-        newInstance(className);
-        dupe(0);
-        loadConstant(message);
+        newInstance(className).dupe().loadConstant(message);
+
         invokeConstructor(className, "java.lang.String");
+
         v.visitInsn(ATHROW);
 
         return this;

Modified: 
tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java?rev=1091949&r1=1091948&r2=1091949&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
 (original)
+++ 
tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
 Wed Apr 13 22:23:31 2011
@@ -1282,7 +1282,7 @@ public class PlasticClassImpl extends Lo
 
             InstructionBuilder builder = newBuilder(description, 
advisedMethodNode);
 
-            builder.newInstance(invocationClassName).dupe(0);
+            builder.newInstance(invocationClassName).dupe();
 
             // Now load up the parameters to the constructor
 
@@ -1303,7 +1303,7 @@ public class PlasticClassImpl extends Lo
             {
                 public void doBuild(InstructionBuilder builder)
                 {
-                    builder.dupe(0).storeVariable("invocation");
+                    builder.dupe().storeVariable("invocation");
 
                     builder.invoke(AbstractMethodInvocation.class, 
MethodInvocation.class, "proceed");
 

Modified: 
tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/InstructionBuilder.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/InstructionBuilder.java?rev=1091949&r1=1091948&r2=1091949&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/InstructionBuilder.java
 (original)
+++ 
tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/plastic/InstructionBuilder.java
 Wed Apr 13 22:23:31 2011
@@ -263,7 +263,7 @@ public interface InstructionBuilder
     InstructionBuilder invokeConstructor(Class clazz, Class... argumentTypes);
 
     /**
-     * Duplicates the top` object on the stack, placing the result at some 
depth.
+     * Duplicates the top object on the stack, placing the result at some 
depth.
      * 
      * @param depth
      *            0 (DUP), 1 (DUP_X1) or 2 (DUP_X2)
@@ -273,6 +273,14 @@ public interface InstructionBuilder
     InstructionBuilder dupe(int depth);
 
     /**
+     * Duplicates the top object on the stack. Commonly used with {@link 
#when(Condition, WhenCallback)}.
+     * 
+     * @see #dupe(int)
+     */
+    @Opcodes("DUP")
+    InstructionBuilder dupe();
+
+    /**
      * Discards the top value on the stack. Assumes the value is a single word 
value: an object reference, or a small
      * primitive) and not a double or long.
      */

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java?rev=1091949&r1=1091948&r2=1091949&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java
 Wed Apr 13 22:23:31 2011
@@ -414,8 +414,7 @@ public class PropertyConduitSourceImpl i
             {
                 public void doBuild(InstructionBuilder builder)
                 {
-                    builder.loadArgument(0).dupe(0);
-                    builder.when(Condition.NULL, new 
InstructionBuilderCallback()
+                    builder.loadArgument(0).dupe().when(Condition.NULL, new 
InstructionBuilderCallback()
                     {
                         public void doBuild(InstructionBuilder builder)
                         {
@@ -804,7 +803,7 @@ public class PropertyConduitSourceImpl i
 
         public void returnResultIfNull(InstructionBuilder builder)
         {
-            builder.dupe(0).when(Condition.NULL, new 
InstructionBuilderCallback()
+            builder.dupe().when(Condition.NULL, new 
InstructionBuilderCallback()
             {
                 public void doBuild(InstructionBuilder builder)
                 {
@@ -1516,7 +1515,7 @@ public class PropertyConduitSourceImpl i
                         createPlasticMethodInvocation(builder, term, method, 
info);
                     }
 
-                    builder.dupe(0).when(Condition.NULL, new 
InstructionBuilderCallback()
+                    builder.dupe().when(Condition.NULL, new 
InstructionBuilderCallback()
                     {
                         public void doBuild(InstructionBuilder builder)
                         {

Modified: 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyShadowBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyShadowBuilderImpl.java?rev=1091949&r1=1091948&r2=1091949&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyShadowBuilderImpl.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyShadowBuilderImpl.java
 Wed Apr 13 22:23:31 2011
@@ -86,7 +86,7 @@ public class PropertyShadowBuilderImpl i
 
                         // Now add the null check.
 
-                        builder.dupe(0).when(Condition.NULL, new 
InstructionBuilderCallback()
+                        builder.dupe().when(Condition.NULL, new 
InstructionBuilderCallback()
                         {
                             public void doBuild(InstructionBuilder builder)
                             {


Reply via email to