Patch: FYI: merge flush-quick-stack patch
Tom Tromey
tromey@redhat.com
Tue Sep 12 19:51:00 GMT 2006
I'm checking this in on the trunk.
This merges over a fix that has been on the ecj branch for a while.
Recently the eclipse compiler has started generating bytecode like:
13: checkcast #17=<Class CD>
16: pop
In this situation we still have to emit an explicit _Jv_CheckCast
call. This patch ensures that by always flushing the quick stack.
Tom
Index: ChangeLog
from Tom Tromey <tromey@redhat.com>
* expr.c (push_value): Always flush quick stack.
Index: expr.c
===================================================================
--- expr.c (revision 116902)
+++ expr.c (working copy)
@@ -301,6 +301,13 @@
TREE_CHAIN (node) = quick_stack;
quick_stack = node;
}
+ /* If the value has a side effect, then we need to evaluate it
+ whether or not the result is used. If the value ends up on the
+ quick stack and is then popped, this won't happen -- so we flush
+ the quick stack. It is safest to simply always flush, though,
+ since TREE_SIDE_EFFECTS doesn't capture COMPONENT_REF, and for
+ the latter we may need to strip conversions. */
+ flush_quick_stack ();
}
/* Pop a type from the type stack.
More information about the Java-patches
mailing list