On Fri, Feb 07, 2014 at 09:01:45PM +0100, Holger Hans Peter Freyther wrote:
As usual I don't understand the issue yet. The interrupt should be
queued through a normal SET_EXCEPT_FLAG and all frame information
should be written back. Do you have an idea or time to look into for
a fix?
I think we should first update thisContext, nativeIP and more and then
check for _gst_abort_execution. This is the order used by interp-bc.inl.
I think it will be very difficult to create a unit test for this one.
diff --git a/libgst/interp-jit.inl b/libgst/interp-jit.inl
index 78fa94c..b74f3ef 100644
--- a/libgst/interp-jit.inl
+++ b/libgst/interp-jit.inl
@@ -407,14 +407,6 @@ _gst_interpret (OOP processOOP)
SET_EXCEPT_FLAG (false);
- if UNCOMMON (_gst_abort_execution)
- {
- OOP selectorOOP;
- selectorOOP = _gst_intern_string ((char *)_gst_abort_execution);
- _gst_abort_execution = NULL;
- SEND_MESSAGE (selectorOOP, 0);
- }
-
/* First, deal with any async signals. */
if (async_queue_enabled)
empty_async_queue ();
@@ -453,6 +445,15 @@ _gst_interpret (OOP processOOP)
native_ip = GET_CONTEXT_IP (thisContext);
}
+ if UNCOMMON (_gst_abort_execution)
+ {
+ OOP selectorOOP;
+ selectorOOP = _gst_intern_string ((char *)_gst_abort_execution);
+ _gst_abort_execution = NULL;
+ SEND_MESSAGE (selectorOOP, 0);
+ }
+
+
if UNCOMMON (time_to_preempt)
set_preemption_timer ();
}
holger
_______________________________________________
help-smalltalk mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/help-smalltalk