Author: kohsuke
Date: Tue Sep 6 23:28:54 2005
New Revision: 279258
URL: http://svn.apache.org/viewcvs?rev=279258&view=rev
Log:
fixed a bug in capturing long/double in the operand stack
Modified:
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/bcel/BcelClassTransformer.java
Modified:
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/bcel/BcelClassTransformer.java
URL:
http://svn.apache.org/viewcvs/jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/bcel/BcelClassTransformer.java?rev=279258&r1=279257&r2=279258&view=diff
==============================================================================
---
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/bcel/BcelClassTransformer.java
(original)
+++
jakarta/commons/sandbox/javaflow/trunk/src/java/org/apache/commons/javaflow/bytecode/transformation/bcel/BcelClassTransformer.java
Tue Sep 6 23:28:54 2005
@@ -488,7 +488,13 @@
for (int i = arguments.length - 1; i >= 0; i--) {
Type type = arguments[i];
insList.append(loadStackRecorder);
- insList.append(new SWAP());
+ if(type.getSize()==1)
+ insList.append(InstructionFactory.SWAP);
+ else {
+ // TODO: is there more efficient way to do this?
+ insList.append(InstructionFactory.DUP_X2);
+ insList.append(InstructionFactory.POP);
+ }
if (type instanceof BasicType) {
if (type.getSize() < 2 && !type.equals(Type.FLOAT)) {
type = Type.INT;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]