You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2011/04/14 00:23:31 UTC
svn commit: r1091949 - in /tapestry/tapestry5/trunk:
plastic/src/main/java/org/apache/tapestry5/internal/plastic/
plastic/src/main/java/org/apache/tapestry5/plastic/
tapestry-core/src/main/java/org/apache/tapestry5/internal/services/
tapestry-ioc/src/m...
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)
{