Opened 14 years ago

Closed 14 years ago

#209 closed defect (fixed)

No support for vectors with element-type FIXNUM in COMPILE-FILE/FASLOAD

Reported by: gb Owned by: gb
Priority: major Milestone:
Component: Compiler Version:
Keywords: Cc:


Even though arrays/vectors with element-type FIXNUM have existed in OpenMCL for over a year, neither COMPILE-FILE nor the fasl loader have any support for dumping/loading them when they appear as constants. The big ETYPECASE in FASL-DUMP-DISPATCH misses them and falls into a clause which tries to dump them as GVECTORs; whether that "works" or not depends on how the bits in the vector are (mis)interpreted as tagged objects, as in the example below.

(defconstant *matrix*
  (let ((matrix (make-array '(80) :element-type 'fixnum)))
    (dotimes (i 80 matrix)
      (setf (aref matrix i) (random 1000)))))

 (defun problem81 ()
  (let ((j 50))
    ;;(aref *matrix* 50) ; no problem
    (aref *matrix* j)   ; bad

Change History (2)

comment:1 Changed 14 years ago by gb

  • Status changed from new to assigned

comment:2 Changed 14 years ago by gb

  • Resolution set to fixed
  • Status changed from assigned to closed

It's true that there's no specialized support for FIXNUM vectors, but the more serious issue was that the ETYPECASE that decides how to dump things fell into a case that tried to dump FIXNUM vectors as gvectors; before the introduction of FIXNUM vectors, this couldn't have happened.

This seems to be fixed in changeset:7834.

Note: See TracTickets for help on using tickets.