Changeset 16004


Ignore:
Timestamp:
Jan 16, 2014, 8:15:37 PM (5 years ago)
Author:
rme
Message:

Merge a couple of bug fixes from trunk.

Location:
release/1.9/source
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • release/1.9/source

  • release/1.9/source/compiler/X86/X8632/x8632-vinsns.lisp

    r15774 r16004  
    27492749  (:anchored-uuo (uuo-error-reg-not-type (:%l object) (:$ub arch::error-object-not-signed-byte-64))))
    27502750
     2751;;; Something is an (UNSIGNED-BYTE 64) iff:
     2752;;; a) it's a non-negative FIXNUM
     2753;;; b) it's a 1- or 2-digit BIGNUM and the sign bit is clear
     2754;;; c) it's a 3-digit BIGNUM and the high word is 0
    27512755(define-x8632-vinsn require-u64 (()
    27522756                                 ((object :lisp))
    27532757                                 ((tag :s32)))
    27542758  :again
    2755   (testl (:$l x8632::fixnummask) (:%l object))
     2759  (testl (:$l (logior (ash 1 31) x8632::fixnummask)) (:%l object))
    27562760  (movl (:%l object) (:%l tag))
    2757   (je :ok-if-non-negative)
     2761  (je :ok)
    27582762  (andl (:$l x8632::fulltagmask) (:%l tag))
    27592763  (cmpl (:$l x8632::fulltag-misc) (:%l tag))
    27602764  (jne :bad)
    2761   (cmpl (:$l x8632::two-digit-bignum-header) (:@ x8632::misc-header-offset (:%l object)))
    2762   (je :two)
    27632765  (cmpl (:$l x8632::three-digit-bignum-header) (:@ x8632::misc-header-offset (:%l object)))
    2764   (jne :bad)
     2766  (jne :notthree)
    27652767  (cmpl (:$b 0) (:@ (+ x8632::misc-data-offset 8) (:%l object)))
    27662768  (je :ok)
     
    27682770  (uuo-error-reg-not-type (:%l object) (:$ub arch::error-object-not-unsigned-byte-64))
    27692771  (jmp :again)
    2770   :two
    2771   (movl (:@ x8632::misc-data-offset (:%l object)) (:%l tag))
    2772   :ok-if-non-negative
    2773   (testl (:%l tag) (:%l tag))
     2772  :notthree
     2773  (xorl (:%l tag) (:%l tag))
     2774  (cmpl (:$l x8632::one-digit-bignum-header) (:@ x8632::misc-header-offset (:%l object)))
     2775  (je :testsign)
     2776  (addl (:$b x8632::fixnumone) (:%l tag))
     2777  (cmpl (:$l x8632::two-digit-bignum-header) (:@ x8632::misc-header-offset (:%l object)))
     2778  (jne :bad)
     2779  :testsign
     2780  (cmpl (:$b 0) (:@ x8632::misc-data-offset (:%l object) (:%l tag)))
    27742781  (js :bad)
    27752782  :ok)
  • release/1.9/source/lisp-kernel/x86-spentry32.s

    r15755 r16004  
    28702870        __(movd %mm0,(%imm0))
    28712871        __(movl %ebp,csp_frame.save_ebp(%imm0))
    2872         __(set_nargs(1))
     2872        __(movl %arg_z,%arg_y)
     2873        __(movl $t_value,%arg_z) /* clear-p arg to %new-gcable-ptr */
     2874        __(set_nargs(2))
    28732875        __(movl $nrs.new_gcable_ptr,%fname)
    28742876        __(jump_fname())
  • release/1.9/source/lisp-kernel/x86-spentry64.s

    r15755 r16004  
    27962796        __(movq %imm1,(%imm0))
    27972797        __(movq %rbp,csp_frame.save_rbp(%imm0))
    2798         __(set_nargs(1))
     2798        __(movq %arg_z,%arg_y)
     2799        __(movl $t_value,%arg_z_l) /* clear-p arg to %new-gcable-ptr */
     2800        __(set_nargs(2))
    27992801        __(movq $nrs.new_gcable_ptr,%fname)
    28002802        __(jump_fname())
Note: See TracChangeset for help on using the changeset viewer.