Changeset 13252


Ignore:
Timestamp:
Dec 3, 2009, 6:38:54 PM (10 years ago)
Author:
gb
Message:

In NX1-REQUIRE (which handles REQUIRE-TYPE of builtin types), treat
the form as (THE type form) - with no runtime typecheck - in unsafe
code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/nx1.lisp

    r13151 r13252  
    454454                      (%nx1-operator %natural-logand)))
    455455
    456 (defnx1 nx1-require ((require-simple-vector) (require-simple-string) (require-integer) (require-list)
    457                      (require-fixnum) (require-real) (require-character) (require-number) (require-symbol) (require-s8) (require-u8) (require-s16) (require-u16) (require-s32) (require-u32) (require-s64) (require-u64))
    458         (arg)
    459   (make-acode (%nx1-default-operator) (nx1-form arg)))
     456(defnx1 nx1-require ((require-simple-vector)
     457                     (require-simple-string)
     458                     (require-integer)
     459                     (require-list)
     460                     (require-fixnum)
     461                     (require-real)
     462                     (require-character)
     463                     (require-number)
     464                     (require-symbol)
     465                     (require-s8)
     466                     (require-u8)
     467                     (require-s16)
     468                     (require-u16)
     469                     (require-s32)
     470                     (require-u32)
     471                     (require-s64)
     472                     (require-u64))
     473        (arg &environment env)
     474
     475  (if (nx-inhibit-safety-checking env)
     476    (let* ((op *nx-sfname*)
     477           (type (case op
     478                   (require-simple-vector 'simple-vector)
     479                   (require-simple-string 'simple-string)
     480                   (require-integer 'integer)
     481                     (require-list 'list)
     482                     (require-fixnum 'fixnum)
     483                     (require-real 'real)
     484                     (require-character 'charater)
     485                     (require-number 'number)
     486                     (require-symbol 'symbol)
     487                     (require-s8 '(signed-byte 8))
     488                     (require-u8 '(unsigned-byte 8))
     489                     (require-s16 '(signed-byte 16))
     490                     (require-u16 '(unsigned-byte 16))
     491                     (require-s32 '(signed-byte 32))
     492                     (require-u32 '(unsigned-byte 32))
     493                     (require-s64 '(signed-byte 64))
     494                     (require-u64 '(unsigned-byte 64)))))
     495      (nx1-form `(the ,type ,arg)))
     496    (make-acode (%nx1-default-operator) (nx1-form arg))))
    460497
    461498(defnx1 nx1-%marker-marker ((%unbound-marker) (%slot-unbound-marker) (%illegal-marker)) ()
Note: See TracChangeset for help on using the changeset viewer.