Changeset 14428


Ignore:
Timestamp:
Nov 12, 2010, 9:31:04 PM (9 years ago)
Author:
rme
Message:

In %get-xcf-byte, xcf.relative-pc (which is a fixnum) can be negative,
and %int-to-ptr doesn't like that. Go through some gyrations to
account for that. See ticket:775.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/level-1/x86-trap-support.lisp

    r13896 r14428  
    318318                        (type (simple-array (unsigned-byte 8) (*)) containing-object))
    319319        (aref containing-object (the fixnum (+ byte-offset delta))))
    320       (%get-unsigned-byte (%int-to-ptr byte-offset) delta))))
     320      ;; xcf.relative-pc is a fixnum, but it might be negative.
     321      (let* ((encoded-pc (%get-ptr xcf-ptr target::xcf.relative-pc))
     322             (pc (ash (%ptr-to-int encoded-pc) (- target::fixnumshift))))
     323        (%get-unsigned-byte (%int-to-ptr pc) delta)))))
    321324
    322325;;; If the byte following a uuo (which is "skip" bytes long, set
Note: See TracChangeset for help on using the changeset viewer.