Changeset 15295


Ignore:
Timestamp:
Apr 6, 2012, 1:42:44 AM (8 years ago)
Author:
gb
Message:

Don't call out in .SPbuiltin_eql.

(#'EQL doesn't call .SPbuiltin_eql yet, since that's hard to bootstrap
on Windows.)

Location:
trunk/source/lisp-kernel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/x86-spentry32.s

    r14657 r15295  
    38663866
    38673867_spentry(builtin_eql)
    3868         __(cmpl %arg_y,%arg_z)
    3869         __(je 1f)
     38680:      __(cmpl %arg_y,%arg_z)
     3869        __(je 8f)
    38703870        /* Not EQ.  Could only possibly be EQL if both are tag-misc  */
    38713871        /* and both have the same subtag. */
     
    38733873        __(andb $tagmask,%imm0_b)
    38743874        __(cmpb $tag_misc,%imm0_b)
    3875         __(jne 2f)
     3875        __(jne 9f)
    38763876        __(movb %arg_z_b,%imm0_bh)
    38773877        __(andb $tagmask,%imm0_bh)
    38783878        __(cmpb %imm0_bh,%imm0_b)
    3879         __(jne 2f)
     3879        __(jne 9f)
    38803880        __(extract_subtag(%arg_y,%imm0_b))
    38813881        __(extract_subtag(%arg_z,%imm0_bh))
    38823882        __(cmpb %imm0_b,%imm0_bh)
    3883         __(jne 2f)
    3884         __(jump_builtin(_builtin_eql,2))
    3885 1:      __(movl $t_value,%arg_z)
    3886         __(ret)
    3887 2:      __(movl $nil_value,%arg_z)
     3883        __(jne 9f)
     3884        __(cmpb $subtag_macptr,%imm0_b)
     3885        __(je 1f)
     3886        __(cmpb $subtag_single_float,%imm0_b)
     3887        __(jne 2f)
     38881:      __(movl misc_data_offset(%arg_y),%imm0)
     3889        __(cmpl misc_data_offset(%arg_z),%imm0)
     3890        __(movl $t_value,%arg_z)
     3891        __(movl $nil_value,%imm0)
     3892        __(cmovnel %imm0,%arg_z)
     3893        __(ret)
     38942:      __(cmpb $subtag_double_float,%imm0_b)
     3895        __(jne 3f)
     3896        __(movl double_float.value(%arg_y),%imm0)
     3897        __(cmpl double_float.value(%arg_z),%imm0)
     3898        __(jne 9f)
     3899        __(movl double_float.value+node_size(%arg_y),%imm0)
     3900        __(cmpl double_float.value+node_size(%arg_z),%imm0)
     3901        __(movl $t_value,%arg_z)
     3902        __(movl $nil_value,%imm0)
     3903        __(cmovnel %imm0,%arg_z)
     3904        __(ret)
     39053:      __(cmpb $subtag_ratio,%imm0_b)
     3906        __(je 4f)
     3907        __(cmpb $subtag_complex,%imm0_b)
     3908        __(jne 6f)
     39094:      __(pushl %ebp)
     3910        __(pushl ratio.denom(%arg_y))
     3911        __(pushl ratio.denom(%arg_z))
     3912        __(movl ratio.numer(%arg_y),%arg_y)                       
     3913        __(movl ratio.numer(%arg_z),%arg_z)
     3914        __(pushl $5f)
     3915        __(jmp 0b)
     3916__(tra(5))
     3917        __(compare_reg_to_nil(%arg_z))
     3918        __(popl %arg_z)
     3919        __(popl %arg_y)
     3920        __(popl %ebp)
     3921        __(je 9f)
     3922        __(jmp 0b)
     39236:      __(cmpb $subtag_bignum,%imm0_b)
     3924        __(jne 9f)
     3925        __(getvheader(%arg_y,%imm0))
     3926        __(cmpl misc_header_offset(%arg_z),%imm0)
     3927        __(jne 9f)
     3928        __(header_length(%imm0,%temp0))
     39297:      __(movl misc_data_offset-node_size(%arg_y,%temp0),%imm0)
     3930        __(cmpl misc_data_offset-node_size(%arg_z,%temp0),%imm0)
     3931        __(jne 9f)
     3932        __(subl $node_size,%temp0)
     3933        __(jne 7b)
     39348:      __(movl $t_value,%arg_z)
     3935        __(ret)
     39369:      __(movl $nil_value,%arg_z)
    38883937        __(ret)
    38893938_endsubp(builtin_eql)
  • trunk/source/lisp-kernel/x86-spentry64.s

    r15084 r15295  
    37003700
    37013701_spentry(builtin_eql)
    3702         __(cmpq %arg_y,%arg_z)
    3703         __(je 1f)
     37020:      __(cmpq %arg_y,%arg_z)
     3703        __(je 8f)
    37043704        /* Not EQ.  Could only possibly be EQL if both are tag-misc  */
    37053705        /* and both have the same subtag   */
     
    37073707        __(extract_lisptag(%arg_z,%imm1))
    37083708        __(cmpb $tag_misc,%imm0_b)
    3709         __(jne 2f)
     3709        __(jne 9f)
    37103710        __(cmpb %imm0_b,%imm1_b)
    3711         __(jne 2f)
     3711        __(jne 9f)
    37123712        __(extract_subtag(%arg_y,%imm0))
    37133713        __(extract_subtag(%arg_z,%imm1))
    37143714        __(cmpb %imm0_b,%imm1_b)
    3715         __(jne 2f)
    3716         __(jump_builtin(_builtin_eql,2))
    3717 1:      __(movl $t_value,%arg_z_l)
    3718         __(ret)
    3719 2:      __(movl $nil_value,%arg_z_l)
     3715        __(jne 9f)
     3716        __(cmpb $subtag_macptr,%imm0_b)
     3717        __(je 1f)
     3718        __(cmpb $subtag_double_float,%imm0_b)
     3719        __(jne 2f)
     37201:      __(movq misc_data_offset(%arg_y),%imm0)
     3721        __(cmpq misc_data_offset(%arg_z),%imm0)
     3722        __(movl $t_value,%arg_z_l)
     3723        __(movl $nil_value,%imm0_l)
     3724        __(cmovnel %imm0_l,%arg_z_l)
     3725        __(ret)
     37262:      __(cmpb $subtag_ratio,%imm0_b)
     3727        __(je 3f)
     3728        __(cmpb $subtag_complex,%imm0_b)
     3729        __(jne 5f)
     37303:      __(pushq %rbp)
     3731        __(movq %rsp,%rsp)
     3732        __(pushq ratio.denom(%arg_y))
     3733        __(pushq ratio.denom(%arg_z))
     3734        __(movq ratio.numer(%arg_y),%arg_y)
     3735        __(movq ratio.numer(%arg_z),%arg_z)
     3736        __(lea 4f(%rip),%ra0)
     3737        __(pushq %ra0)
     3738        __(jmp 0b)
     3739__(tra(4))
     3740        __(compare_reg_to_nil(%arg_z))
     3741        __(popq %arg_z)
     3742        __(popq %arg_y)
     3743        __(popq %rbp)
     3744        __(je 9f)
     3745        __(jmp 0b)
     37465:      __(cmpb $subtag_bignum,%imm0_b)
     3747        __(jne 9f)
     3748        __(getvheader(%arg_y,%imm2))
     3749        __(cmpq misc_header_offset(%arg_z),%imm2)
     3750        __(jne 9f)
     3751        __(shrq $num_subtag_bits,%imm2)
     3752        __(xorl %imm1_l,%imm1_l)
     37536:      __(movl misc_data_offset(%arg_y,%imm1,4),%imm0_l)
     3754        __(cmpl misc_data_offset(%arg_z,%imm1,4),%imm0_l)
     3755        __(jne 9f)
     3756        __(addq $1,%imm1)
     3757        __(cmpq %imm1,%imm2)
     3758        __(jne 6b)
     37598:      __(movl $t_value,%arg_z_l)
     3760        __(ret)
     37619:      __(movl $nil_value,%arg_z_l)
    37203762        __(ret)
    37213763_endsubp(builtin_eql)
Note: See TracChangeset for help on using the changeset viewer.