X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Falloc.c;h=f67ccd048492a628061bf926ee1572a97ddaebb4;hb=d94c1b4a8c534bde146823f56558faf37cd4c4d7;hp=eeb827f1a8b8aeec2527dd9a813a9d955b2a8dfa;hpb=ce73c961ea089afea8ec523e1a5556c27d1aa6d2;p=sbcl.git diff --git a/src/runtime/alloc.c b/src/runtime/alloc.c index eeb827f..f67ccd0 100644 --- a/src/runtime/alloc.c +++ b/src/runtime/alloc.c @@ -73,13 +73,13 @@ pa_alloc(int bytes, int page_type_flag) #ifdef LISP_FEATURE_STACK_GROWS_DOWNWARD_NOT_UPWARD #error "!C_STACK_IS_CONTROL_STACK and STACK_GROWS_DOWNWARD_NOT_UPWARD is not supported" #endif - *current_control_stack_pointer = (lispobj) result; - current_control_stack_pointer += 1; + *access_control_stack_pointer(th) = (lispobj) result; + access_control_stack_pointer(th) += 1; #endif do_pending_interrupt(); #ifndef LISP_FEATURE_C_STACK_IS_CONTROL_STACK - current_control_stack_pointer -= 1; - result = (lispobj *) *current_control_stack_pointer; + access_control_stack_pointer(th) -= 1; + result = (lispobj *) *access_control_stack_pointer(th); #endif } return result; @@ -197,9 +197,9 @@ alloc_code_object (unsigned boxed, unsigned unboxed) { /* Coming in, boxed is the number of boxed words requested. * Converting it to a fixnum makes it measured in bytes. It's also * rounded up to double word along the way. */ - boxed = make_fixnum(boxed + 1 + - (offsetof(struct code, trace_table_offset) >> - WORD_SHIFT)); + boxed = (boxed + 1 + + (offsetof(struct code, trace_table_offset) >> + WORD_SHIFT)) << WORD_SHIFT; boxed &= ~LOWTAG_MASK; /* Unboxed is in bytes, round it up to double word boundary. Now @@ -216,7 +216,7 @@ alloc_code_object (unsigned boxed, unsigned unboxed) { lose("alloc_code_object called with GC enabled."); boxed = boxed << (N_WIDETAG_BITS - WORD_SHIFT); code->header = boxed | CODE_HEADER_WIDETAG; - code->code_size = unboxed; + code->code_size = unboxed >> (WORD_SHIFT - N_FIXNUM_TAG_BITS); code->entry_points = NIL; code->debug_info = NIL; return make_lispobj(code, OTHER_POINTER_LOWTAG);