[Openmcl-cvs-notifications] r15295 - in /trunk/source/lisp-kernel: x86-spentry32.s x86-spentry64.s
gb at clozure.com
gb at clozure.com
Thu Apr 5 20:42:44 CDT 2012
Author: gb
Date: Thu Apr 5 20:42:44 2012
New Revision: 15295
Log:
Don't call out in .SPbuiltin_eql. =
(#'EQL doesn't call .SPbuiltin_eql yet, since that's hard to bootstrap
on Windows.)
Modified:
trunk/source/lisp-kernel/x86-spentry32.s
trunk/source/lisp-kernel/x86-spentry64.s
Modified: trunk/source/lisp-kernel/x86-spentry32.s
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/x86-spentry32.s (original)
+++ trunk/source/lisp-kernel/x86-spentry32.s Thu Apr 5 20:42:44 2012
@@ -3865,26 +3865,75 @@
_endsubp(builtin_le)
=
_spentry(builtin_eql)
- __(cmpl %arg_y,%arg_z)
- __(je 1f)
+0: __(cmpl %arg_y,%arg_z)
+ __(je 8f)
/* Not EQ. Could only possibly be EQL if both are tag-misc */
/* and both have the same subtag. */
__(movl %arg_y,%imm0)
__(andb $tagmask,%imm0_b)
__(cmpb $tag_misc,%imm0_b)
- __(jne 2f)
+ __(jne 9f)
__(movb %arg_z_b,%imm0_bh)
__(andb $tagmask,%imm0_bh)
__(cmpb %imm0_bh,%imm0_b)
- __(jne 2f)
+ __(jne 9f)
__(extract_subtag(%arg_y,%imm0_b))
__(extract_subtag(%arg_z,%imm0_bh))
__(cmpb %imm0_b,%imm0_bh)
- __(jne 2f)
- __(jump_builtin(_builtin_eql,2))
-1: __(movl $t_value,%arg_z)
- __(ret)
-2: __(movl $nil_value,%arg_z)
+ __(jne 9f)
+ __(cmpb $subtag_macptr,%imm0_b)
+ __(je 1f)
+ __(cmpb $subtag_single_float,%imm0_b)
+ __(jne 2f)
+1: __(movl misc_data_offset(%arg_y),%imm0)
+ __(cmpl misc_data_offset(%arg_z),%imm0)
+ __(movl $t_value,%arg_z)
+ __(movl $nil_value,%imm0)
+ __(cmovnel %imm0,%arg_z)
+ __(ret)
+2: __(cmpb $subtag_double_float,%imm0_b)
+ __(jne 3f)
+ __(movl double_float.value(%arg_y),%imm0)
+ __(cmpl double_float.value(%arg_z),%imm0)
+ __(jne 9f)
+ __(movl double_float.value+node_size(%arg_y),%imm0)
+ __(cmpl double_float.value+node_size(%arg_z),%imm0)
+ __(movl $t_value,%arg_z)
+ __(movl $nil_value,%imm0)
+ __(cmovnel %imm0,%arg_z)
+ __(ret)
+3: __(cmpb $subtag_ratio,%imm0_b)
+ __(je 4f)
+ __(cmpb $subtag_complex,%imm0_b)
+ __(jne 6f)
+4: __(pushl %ebp)
+ __(pushl ratio.denom(%arg_y))
+ __(pushl ratio.denom(%arg_z))
+ __(movl ratio.numer(%arg_y),%arg_y) =
+ __(movl ratio.numer(%arg_z),%arg_z)
+ __(pushl $5f)
+ __(jmp 0b)
+__(tra(5))
+ __(compare_reg_to_nil(%arg_z))
+ __(popl %arg_z)
+ __(popl %arg_y)
+ __(popl %ebp)
+ __(je 9f)
+ __(jmp 0b)
+6: __(cmpb $subtag_bignum,%imm0_b)
+ __(jne 9f)
+ __(getvheader(%arg_y,%imm0))
+ __(cmpl misc_header_offset(%arg_z),%imm0)
+ __(jne 9f)
+ __(header_length(%imm0,%temp0))
+7: __(movl misc_data_offset-node_size(%arg_y,%temp0),%imm0)
+ __(cmpl misc_data_offset-node_size(%arg_z,%temp0),%imm0)
+ __(jne 9f)
+ __(subl $node_size,%temp0)
+ __(jne 7b)
+8: __(movl $t_value,%arg_z)
+ __(ret)
+9: __(movl $nil_value,%arg_z)
__(ret)
_endsubp(builtin_eql)
=
Modified: trunk/source/lisp-kernel/x86-spentry64.s
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/x86-spentry64.s (original)
+++ trunk/source/lisp-kernel/x86-spentry64.s Thu Apr 5 20:42:44 2012
@@ -3699,24 +3699,66 @@
_endsubp(builtin_le)
=
_spentry(builtin_eql)
- __(cmpq %arg_y,%arg_z)
- __(je 1f)
+0: __(cmpq %arg_y,%arg_z)
+ __(je 8f)
/* Not EQ. Could only possibly be EQL if both are tag-misc */
/* and both have the same subtag */
__(extract_lisptag(%arg_y,%imm0))
__(extract_lisptag(%arg_z,%imm1))
__(cmpb $tag_misc,%imm0_b)
- __(jne 2f)
+ __(jne 9f)
__(cmpb %imm0_b,%imm1_b)
- __(jne 2f)
+ __(jne 9f)
__(extract_subtag(%arg_y,%imm0))
__(extract_subtag(%arg_z,%imm1))
__(cmpb %imm0_b,%imm1_b)
- __(jne 2f)
- __(jump_builtin(_builtin_eql,2))
-1: __(movl $t_value,%arg_z_l)
- __(ret)
-2: __(movl $nil_value,%arg_z_l)
+ __(jne 9f)
+ __(cmpb $subtag_macptr,%imm0_b)
+ __(je 1f)
+ __(cmpb $subtag_double_float,%imm0_b)
+ __(jne 2f)
+1: __(movq misc_data_offset(%arg_y),%imm0)
+ __(cmpq misc_data_offset(%arg_z),%imm0)
+ __(movl $t_value,%arg_z_l)
+ __(movl $nil_value,%imm0_l)
+ __(cmovnel %imm0_l,%arg_z_l)
+ __(ret)
+2: __(cmpb $subtag_ratio,%imm0_b)
+ __(je 3f)
+ __(cmpb $subtag_complex,%imm0_b)
+ __(jne 5f)
+3: __(pushq %rbp)
+ __(movq %rsp,%rsp)
+ __(pushq ratio.denom(%arg_y))
+ __(pushq ratio.denom(%arg_z))
+ __(movq ratio.numer(%arg_y),%arg_y)
+ __(movq ratio.numer(%arg_z),%arg_z)
+ __(lea 4f(%rip),%ra0)
+ __(pushq %ra0)
+ __(jmp 0b)
+__(tra(4))
+ __(compare_reg_to_nil(%arg_z))
+ __(popq %arg_z)
+ __(popq %arg_y)
+ __(popq %rbp)
+ __(je 9f)
+ __(jmp 0b)
+5: __(cmpb $subtag_bignum,%imm0_b)
+ __(jne 9f)
+ __(getvheader(%arg_y,%imm2))
+ __(cmpq misc_header_offset(%arg_z),%imm2)
+ __(jne 9f)
+ __(shrq $num_subtag_bits,%imm2)
+ __(xorl %imm1_l,%imm1_l)
+6: __(movl misc_data_offset(%arg_y,%imm1,4),%imm0_l)
+ __(cmpl misc_data_offset(%arg_z,%imm1,4),%imm0_l)
+ __(jne 9f)
+ __(addq $1,%imm1)
+ __(cmpq %imm1,%imm2)
+ __(jne 6b)
+8: __(movl $t_value,%arg_z_l)
+ __(ret)
+9: __(movl $nil_value,%arg_z_l)
__(ret) =
_endsubp(builtin_eql)
=
More information about the Openmcl-cvs-notifications
mailing list