Ticket #209 (closed defect: fixed)

Opened 7 years ago

Last modified 7 years ago

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:

Description

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

comment:1 Changed 7 years ago by gb

  • Status changed from new to assigned

comment:2 Changed 7 years ago by gb

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

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.