help-smalltalk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-smalltalk] JIT user interrupts and updating the context


From: Paolo Bonzini
Subject: Re: [Help-smalltalk] JIT user interrupts and updating the context
Date: Fri, 07 Feb 2014 22:42:32 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

Il 07/02/2014 21:41, Holger Hans Peter Freyther ha scritto:
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.

Looks good, thanks!

Paolo

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






reply via email to

[Prev in Thread] Current Thread [Next in Thread]