diff options
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/alloc.c b/src/alloc.c index f8908c91dba..55c30847bbf 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -3160,26 +3160,26 @@ cleanup_vector (struct Lisp_Vector *vector) | |||
| 3160 | module_finalize_function (function); | 3160 | module_finalize_function (function); |
| 3161 | } | 3161 | } |
| 3162 | #endif | 3162 | #endif |
| 3163 | else if (NATIVE_COMP_FLAG | 3163 | #ifdef HAVE_NATIVE_COMP |
| 3164 | && PSEUDOVECTOR_TYPEP (&vector->header, PVEC_NATIVE_COMP_UNIT)) | 3164 | else if (PSEUDOVECTOR_TYPEP (&vector->header, PVEC_NATIVE_COMP_UNIT)) |
| 3165 | { | 3165 | { |
| 3166 | struct Lisp_Native_Comp_Unit *cu = | 3166 | struct Lisp_Native_Comp_Unit *cu = |
| 3167 | PSEUDOVEC_STRUCT (vector, Lisp_Native_Comp_Unit); | 3167 | PSEUDOVEC_STRUCT (vector, Lisp_Native_Comp_Unit); |
| 3168 | unload_comp_unit (cu); | 3168 | unload_comp_unit (cu); |
| 3169 | } | 3169 | } |
| 3170 | else if (NATIVE_COMP_FLAG | 3170 | else if (PSEUDOVECTOR_TYPEP (&vector->header, PVEC_SUBR)) |
| 3171 | && PSEUDOVECTOR_TYPEP (&vector->header, PVEC_SUBR)) | ||
| 3172 | { | 3171 | { |
| 3173 | struct Lisp_Subr *subr = | 3172 | struct Lisp_Subr *subr = |
| 3174 | PSEUDOVEC_STRUCT (vector, Lisp_Subr); | 3173 | PSEUDOVEC_STRUCT (vector, Lisp_Subr); |
| 3175 | if (!NILP (subr->native_comp_u[0])) | 3174 | if (!NILP (subr->native_comp_u)) |
| 3176 | { | 3175 | { |
| 3177 | /* FIXME Alternative and non invasive solution to this | 3176 | /* FIXME Alternative and non invasive solution to this |
| 3178 | cast? */ | 3177 | cast? */ |
| 3179 | xfree ((char *)subr->symbol_name); | 3178 | xfree ((char *)subr->symbol_name); |
| 3180 | xfree (subr->native_c_name[0]); | 3179 | xfree (subr->native_c_name); |
| 3181 | } | 3180 | } |
| 3182 | } | 3181 | } |
| 3182 | #endif | ||
| 3183 | } | 3183 | } |
| 3184 | 3184 | ||
| 3185 | /* Reclaim space used by unmarked vectors. */ | 3185 | /* Reclaim space used by unmarked vectors. */ |
| @@ -6785,15 +6785,17 @@ mark_object (Lisp_Object arg) | |||
| 6785 | break; | 6785 | break; |
| 6786 | 6786 | ||
| 6787 | case PVEC_SUBR: | 6787 | case PVEC_SUBR: |
| 6788 | #ifdef HAVE_NATIVE_COMP | ||
| 6788 | if (SUBR_NATIVE_COMPILEDP (obj)) | 6789 | if (SUBR_NATIVE_COMPILEDP (obj)) |
| 6789 | { | 6790 | { |
| 6790 | set_vector_marked (ptr); | 6791 | set_vector_marked (ptr); |
| 6791 | struct Lisp_Subr *subr = XSUBR (obj); | 6792 | struct Lisp_Subr *subr = XSUBR (obj); |
| 6792 | mark_object (subr->native_intspec); | 6793 | mark_object (subr->native_intspec); |
| 6793 | mark_object (subr->native_comp_u[0]); | 6794 | mark_object (subr->native_comp_u); |
| 6794 | mark_object (subr->lambda_list[0]); | 6795 | mark_object (subr->lambda_list); |
| 6795 | mark_object (subr->type[0]); | 6796 | mark_object (subr->type); |
| 6796 | } | 6797 | } |
| 6798 | #endif | ||
| 6797 | break; | 6799 | break; |
| 6798 | 6800 | ||
| 6799 | case PVEC_FREE: | 6801 | case PVEC_FREE: |