X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Falloc.c;h=f67ccd048492a628061bf926ee1572a97ddaebb4;hb=f7faed97898dd0e94a18b0d1fca03aaa0fe24ab0;hp=58c1798d7ee7fedf5196e3f08b4f3bc3916063c5;hpb=6793d7dd32d1fa48d2ee395e240e1b7ff857912e;p=sbcl.git diff --git a/src/runtime/alloc.c b/src/runtime/alloc.c index 58c1798..f67ccd0 100644 --- a/src/runtime/alloc.c +++ b/src/runtime/alloc.c @@ -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);