]> granicus.if.org Git - gc/commitdiff
GC_stack_range_for code refactoring (Darwin/arm)
authorIvan Maidanski <ivmai@mail.ru>
Fri, 23 Jan 2015 08:20:53 +0000 (11:20 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Fri, 23 Jan 2015 08:20:53 +0000 (11:20 +0300)
* darwin_stop_world.c (GC_stack_range_for): Roll GC_push_one() calls
to a loop (for ARM32 only).
* os_dep.c: Remove redundant include mach/thread_status.h as already
included from gc_priv.h (for DARWIN only).

darwin_stop_world.c
os_dep.c

index 6ca345a67b88865fe98045ac21d7f87856dda1ca..04e978e1b03a48d70fe354ed15c5d92e5dee9ca7 100644 (file)
@@ -232,22 +232,14 @@ STATIC ptr_t GC_stack_range_for(ptr_t *phi, thread_act_t thread, GC_thread p,
 #     ifndef DARWIN_DONT_PARSE_STACK
         *phi = GC_FindTopOfStack(state.THREAD_FLD(sp));
 #     endif
-      GC_push_one(state.THREAD_FLD(r[0]));
-      GC_push_one(state.THREAD_FLD(r[1]));
-      GC_push_one(state.THREAD_FLD(r[2]));
-      GC_push_one(state.THREAD_FLD(r[3]));
-      GC_push_one(state.THREAD_FLD(r[4]));
-      GC_push_one(state.THREAD_FLD(r[5]));
-      GC_push_one(state.THREAD_FLD(r[6]));
-      GC_push_one(state.THREAD_FLD(r[7]));
-      GC_push_one(state.THREAD_FLD(r[8]));
-      GC_push_one(state.THREAD_FLD(r[9]));
-      GC_push_one(state.THREAD_FLD(r[10]));
-      GC_push_one(state.THREAD_FLD(r[11]));
-      GC_push_one(state.THREAD_FLD(r[12]));
-      /* GC_push_one(state.THREAD_FLD(sp)); */
+      {
+        int j;
+        for (j = 0; j <= 12; j++) {
+          GC_push_one(state.THREAD_FLD(r[j]));
+        }
+      }
+      /* "pc" and "sp" are skipped */
       GC_push_one(state.THREAD_FLD(lr));
-      /* GC_push_one(state.THREAD_FLD(pc)); */
       GC_push_one(state.THREAD_FLD(cpsr));
 
 #   else
index 4a77d31ee5a67a6c2b51403edc653cbf12e30f8d..98e2af980d410ff5beeb83c6cfb4d683ead23270 100644 (file)
--- a/os_dep.c
+++ b/os_dep.c
@@ -3832,7 +3832,6 @@ GC_INNER void GC_remove_protection(struct hblk *h, word nblocks,
 
 #include <mach/mach.h>
 #include <mach/mach_error.h>
-#include <mach/thread_status.h>
 #include <mach/exception.h>
 #include <mach/task.h>
 #include <pthread.h>