Changeset 5154


Ignore:
Timestamp:
Sep 6, 2006, 5:37:15 PM (18 years ago)
Author:
Gary Byers
Message:

misc_ref/misc_set: handle 32-bit strings.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/lisp-kernel/x86-spentry64.s

    r5016 r5154  
    404404        .quad local_label(misc_ref_string) /* c7 simple_base_string   */
    405405        .quad local_label(misc_ref_invalid) /* c8 odd_fixnum   */
    406         .quad local_label(misc_ref_invalid) /* c9 immheader_1   */
     406        .quad local_label(misc_ref_new_string) /* c9 new_string_1   */
    407407        .quad local_label(misc_ref_fixnum_vector) /* ca fixnum_vector   */
    408408        .quad local_label(misc_ref_invalid) /* cb nil   */
     
    531531        __(leaq subtag_character(%imm0),%arg_z)
    532532        __(jmp *%ra0)
     533local_label(misc_ref_new_string):
     534        __(movq %arg_z,%imm0)
     535        __(shr $1,%imm0)
     536        __(movl misc_data_offset(%arg_y,%imm0),%imm0_l)
     537        __(shlq $charcode_shift,%imm0)
     538        __(leaq subtag_character(%imm0),%arg_z)
     539        __(jmp *%ra0)       
    533540local_label(misc_ref_u16):     
    534541        __(movq %arg_z,%imm0)
     
    839846        .quad local_label(misc_set_string) /* c7 simple_base_string   */
    840847        .quad local_label(misc_set_invalid)     /* c8 odd_fixnum   */
    841         .quad local_label(misc_set_invalid)     /* c9 immheader_1   */
     848        .quad local_label(misc_set_new_string)  /* c9 new_strin   */
    842849        .quad local_label(misc_set_fixnum_vector)  /* ca fixnum_vector   */
    843850        .quad local_label(misc_set_invalid) /* cb nil   */
     
    10501057        __(movb %imm0_b,misc_data_offset(%arg_x,%imm1))
    10511058        __(jmp *%ra0)
     1059local_label(misc_set_new_string):
     1060        __(cmpb $subtag_character,%arg_z_b)
     1061        __(movq %arg_z,%imm0)
     1062        __(jne local_label(misc_set_bad))
     1063        __(movq %arg_y,%imm1)
     1064        __(shrq $charcode_shift,%imm0)
     1065        __(shrq $1,%imm1)
     1066        __(movl %imm0_l,misc_data_offset(%arg_x,%imm1))
     1067        __(jmp *%ra0)       
    10521068local_label(misc_set_s16):     
    10531069        __(movq %arg_z,%imm0)
Note: See TracChangeset for help on using the changeset viewer.