[Pixelle-commit] SF.net SVN: pixelle: [84] trunk/pixelle/etc/Pixelle.g
Brought to you by:
dbrosius
|
From: <dbr...@us...> - 2008-06-26 03:24:06
|
Revision: 84
http://pixelle.svn.sourceforge.net/pixelle/?rev=84&view=rev
Author: dbrosius
Date: 2008-06-25 20:24:15 -0700 (Wed, 25 Jun 2008)
Log Message:
-----------
on short circuit make sure to pop the extra conditional
Modified Paths:
--------------
trunk/pixelle/etc/Pixelle.g
Modified: trunk/pixelle/etc/Pixelle.g
===================================================================
--- trunk/pixelle/etc/Pixelle.g 2008-06-26 03:17:16 UTC (rev 83)
+++ trunk/pixelle/etc/Pixelle.g 2008-06-26 03:24:15 UTC (rev 84)
@@ -94,25 +94,29 @@
cond_and_expr
@init
{
- Label falseLabel = null;
+ Label false1Label = null;
+ Label false2Label = null;
Label continueLabel = null;
}
:
cond_or_expr
( '&&' cond_or_expr
{
- falseLabel = new Label();
+ false1Label = new Label();
+ false2Label = new Label();
continueLabel = new Label();
mv.visitInsn(Opcodes.DCONST_0);
mv.visitInsn(Opcodes.DCMPG);
- mv.visitJumpInsn(Opcodes.IFEQ, falseLabel);
+ mv.visitJumpInsn(Opcodes.IFEQ, false1Label);
mv.visitInsn(Opcodes.DCONST_0);
mv.visitInsn(Opcodes.DCMPG);
- mv.visitJumpInsn(Opcodes.IFEQ, falseLabel);
+ mv.visitJumpInsn(Opcodes.IFEQ, false2Label);
mv.visitInsn(Opcodes.DCONST_1);
mv.visitJumpInsn(Opcodes.GOTO, continueLabel);
- mv.visitLabel(falseLabel);
+ mv.visitLabel(false1Label);
+ mv.visitInsn(Opcodes.POP);
+ mv.visitLabel(false2Label);
mv.visitInsn(Opcodes.DCONST_0);
mv.visitLabel(continueLabel);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|