[PATCH 1/2] jit: Flush the code for the runtime directives

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH 1/2] jit: Flush the code for the runtime directives

Holger Freyther
From: Holger Hans Peter Freyther <[hidden email]>

On x86/amd64 this will call mprotect with PROT_EXEC on the
allocated memory. This is fixing an infinite recursion in the
segfault handler of the garbage collection.

2013-06-03  Holger Hans Peter Freyther  <[hidden email]>

        * xlat.c: Use jit_flush_code for the runtime code.
---
 libgst/ChangeLog |    4 ++++
 libgst/xlat.c    |    2 ++
 2 files changed, 6 insertions(+)

diff --git a/libgst/ChangeLog b/libgst/ChangeLog
index 040063b..031c3ea 100644
--- a/libgst/ChangeLog
+++ b/libgst/ChangeLog
@@ -1,3 +1,7 @@
+2013-06-03  Holger Hans Peter Freyther  <[hidden email]>
+
+ * xlat.c: Use jit_flush_code for the runtime code.
+
 2013-05-18  Holger Hans Peter Freyther  <[hidden email]>
 
  * libgst/byte.c: Define _gst_omit_line_numbers, emit line
diff --git a/libgst/xlat.c b/libgst/xlat.c
index e555cca..3f4a555 100644
--- a/libgst/xlat.c
+++ b/libgst/xlat.c
@@ -620,6 +620,8 @@ generate_run_time_code (void)
 
   jit_movi_i (JIT_RET, 0);
   jit_ret ();
+
+  jit_flush_code(_gst_run_native_code, jit_get_label() );
 }
 
 
--
1.7.10.4


_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk
Reply | Threaded
Open this post in threaded view
|

[PATCH 2/2] jit: Fix the bootstrap of CharacterArray

Holger Freyther
From: Holger Hans Peter Freyther <[hidden email]>

CharacterArray>>#withWindowsShellEscapes has the following code
that will lead to execution during the bootstrap. The interpreter
is optimizing the calls for >>#value: but the JIT is not doing that.

Change the order of the bootstrap to load the BlockClosure and
related classes before the CharacterArray.

        table := ##(
            | t |
            t := ByteArray new: 256.
            #($% $" $< $> $| $& $^ $ ) do: [ :each | t at: each codePoint put: 1 ].
            t).

2013-06-03  Holger Hans Peter Freyther  <[hidden email]>

        * files.c: Make BlockClosure available before the CharacterArray.
---
 libgst/ChangeLog |    4 ++++
 libgst/files.c   |    8 ++++----
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/libgst/ChangeLog b/libgst/ChangeLog
index 031c3ea..ba0c5ff 100644
--- a/libgst/ChangeLog
+++ b/libgst/ChangeLog
@@ -1,5 +1,9 @@
 2013-06-03  Holger Hans Peter Freyther  <[hidden email]>
 
+ * files.c: Make BlockClosure available before the CharacterArray.
+
+2013-06-03  Holger Hans Peter Freyther  <[hidden email]>
+
  * xlat.c: Use jit_flush_code for the runtime code.
 
 2013-05-18  Holger Hans Peter Freyther  <[hidden email]>
diff --git a/libgst/files.c b/libgst/files.c
index a7156f9..c3626ff 100644
--- a/libgst/files.c
+++ b/libgst/files.c
@@ -200,6 +200,10 @@ static const char standard_files[] = {
   "CompiledBlk.st\0"
   "Array.st\0"
   "ByteArray.st\0"
+  "ContextPart.st\0"
+  "MthContext.st\0"
+  "BlkContext.st\0"
+  "BlkClosure.st\0"
   "CharArray.st\0"
   "String.st\0"
   "Symbol.st\0"
@@ -225,10 +229,6 @@ static const char standard_files[] = {
   "RWStream.st\0"
   "UndefObject.st\0"
   "ProcSched.st\0"
-  "ContextPart.st\0"
-  "MthContext.st\0"
-  "BlkContext.st\0"
-  "BlkClosure.st\0"
   "Behavior.st\0"
   "ClassDesc.st\0"
   "Class.st\0"
--
1.7.10.4


_______________________________________________
help-smalltalk mailing list
[hidden email]
https://lists.gnu.org/mailman/listinfo/help-smalltalk