[Openmcl-cvs-notifications] r8526 - /trunk/source/lisp-kernel/x86-spentry64.s
rme at clozure.com
rme at clozure.com
Wed Feb 20 21:03:49 EST 2008
Author: rme
Date: Wed Feb 20 21:03:49 2008
New Revision: 8526
Log:
misc_ref_common, misc_set_common: When referencing or altering bits in
a bit vector (see local_label(misc_ref_bit_vector) and
local_label(misc_set_bit_vector)), use a memory operand as the bit base
in the appropriate BT/BTS/BTR instruction.
This is shorter, and avoids using an additional register for a word
index.
Modified:
trunk/source/lisp-kernel/x86-spentry64.s
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 Wed Feb 20 21:03:49 2008
@@ -557,10 +557,7 @@
__(ret)
local_label(misc_ref_bit_vector):
__(unbox_fixnum(%arg_z,%imm0))
- __(movl $63,%imm1_l)
- __(andb %imm0_b,%imm1_b)
- __(shrq $6,%imm0)
- __(btq %imm1,misc_data_offset(%arg_y,%imm0,8))
+ __(btq %imm0,misc_data_offset(%arg_y))
__(setc %imm0_b)
__(negb %imm0_b)
__(andl $fixnum_one,%imm0_l)
@@ -1022,17 +1019,14 @@
local_label(misc_set_bit_vector): =
__(testq $~fixnumone,%arg_z)
__(jne local_label(misc_set_bad))
- __(unbox_fixnum(%arg_y,%imm1))
- __(movzbl %imm1_b,%imm0_l)
- __(andb $63,%imm0_b)
- __(shrq $6,%imm1)
+ __(unbox_fixnum(%arg_y,%imm0))
__(testb %arg_z_b,%arg_z_b)
__(je local_label(misc_set_clr_bit))
local_label(misc_set_set_bit): =
- __(btsq %imm0,misc_data_offset(%arg_x,%imm1,8))
+ __(btsq %imm0,misc_data_offset(%arg_x))
__(ret)
local_label(misc_set_clr_bit): =
- __(btrq %imm0,misc_data_offset(%arg_x,%imm1,8))
+ __(btrq %imm0,misc_data_offset(%arg_x))
__(ret)
local_label(misc_set_u8): =
__(testq $~(0xff<<fixnumshift),%arg_z)
More information about the Openmcl-cvs-notifications
mailing list