Changeset 12815
- Timestamp:
- Sep 11, 2009, 10:07:02 AM (15 years ago)
- File:
-
- 1 edited
-
trunk/source/lisp-kernel/x86-gc.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/lisp-kernel/x86-gc.c
r12807 r12815 2909 2909 } 2910 2910 2911 #ifdef X8664 2911 2912 static void 2912 2913 wp_update_xp(ExceptionInformation *xp, LispObj old, LispObj new) … … 2914 2915 natural *regs = (natural *)xpGPRvector(xp); 2915 2916 2916 #ifdef X86642917 2917 wp_maybe_update(®s[Iarg_z], old, new); 2918 2918 wp_maybe_update(®s[Iarg_y], old, new); … … 2926 2926 wp_maybe_update(®s[Itemp1], old, new); 2927 2927 wp_maybe_update(®s[Itemp2], old, new); 2928 #endif2929 2928 2930 2929 #if 0 … … 2935 2934 update_locref(&(regs[Iip])); 2936 2935 #endif 2937 2938 } 2936 } 2937 #else 2938 static void 2939 wp_update_xp(ExceptionInformation *xp, LispObj old, LispObj new, natural node_regs_mask) 2940 { 2941 natural *regs = (natural *)xpGPRvector(xp); 2942 2943 if (node_regs_mask & (1<<0)) wp_maybe_update(®s[REG_EAX], old, new); 2944 if (node_regs_mask & (1<<1)) wp_maybe_update(®s[REG_ECX], old, new); 2945 2946 if (regs[REG_EFL] & EFL_DF) { 2947 /* then EDX is an imm reg */ 2948 ; 2949 } else 2950 if (node_regs_mask & (1<<2)) wp_maybe_update(®s[REG_EDX], old, new); 2951 2952 if (node_regs_mask & (1<<3)) wp_maybe_update(®s[REG_EBX], old, new); 2953 if (node_regs_mask & (1<<4)) wp_maybe_update(®s[REG_ESP], old, new); 2954 if (node_regs_mask & (1<<5)) wp_maybe_update(®s[REG_EBP], old, new); 2955 if (node_regs_mask & (1<<6)) wp_maybe_update(®s[REG_ESI], old, new); 2956 if (node_regs_mask & (1<<7)) wp_maybe_update(®s[REG_EDI], old, new); 2957 /* we shouldn't watch functions, so no need to update PC */ 2958 } 2959 #endif 2939 2960 2940 2961 static void … … 2944 2965 ExceptionInformation *xp; 2945 2966 2946 #ifdef X86642947 2967 xp = tcr->gc_context; 2948 2968 if (xp) { 2969 #ifdef X8664 2949 2970 wp_update_xp(xp, old, new); 2971 #else 2972 wp_update_xp(xp, old, new, tcr->node_regs_mask); 2973 wp_maybe_update(&tcr->save0, old, new); 2974 wp_maybe_update(&tcr->save1, old, new); 2975 wp_maybe_update(&tcr->save2, old, new); 2976 wp_maybe_update(&tcr->save3, old, new); 2977 wp_maybe_update(&tcr->next_method_context, old, new); 2978 #endif 2950 2979 } 2951 2980 for (xframes = tcr->xframe; xframes; xframes = xframes->prev) { 2981 #ifdef X8664 2952 2982 wp_update_xp(xframes->curr, old, new); 2953 } 2954 #endif 2983 #else 2984 wp_update_xp(xframes->curr, old, new, xframes->node_regs_mask); 2985 #endif 2986 } 2955 2987 } 2956 2988
Note:
See TracChangeset
for help on using the changeset viewer.
