Changeset 250


Ignore:
Timestamp:
Jan 10, 2004, 10:06:18 PM (21 years ago)
Author:
Gary Byers
Message:

_SPbuiltin_length handles the LIST-LENGTH case inline.

File:
1 edited

Legend:

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

    r234 r250  
    33413341       
    33423342_spentry(builtin_length)
    3343         __(cmpri(cr1,arg_z,nil_value))
    33443343        __(extract_typecode(imm0,arg_z))
    33453344        __(cmpri(cr0,imm0,min_vector_subtag))
    3346         __(beq cr1,1f)
     3345        __(cmpri(cr2,imm0,tag_list))
    33473346        __(beq- cr0,2f)
    33483347        __(blt- cr0,3f)
     
    33533352        __(ldr(arg_z,vectorH.logsize(arg_z)))
    33543353        __(blr)
    3355 1:
    3356         __(li arg_z,0)
    3357         __(blr)
    3358 3:
     33543:      __(bne cr2,9f)
     3355        __(li temp2,0)
     3356        __(mr temp0,arg_z)
     3357        __(mr temp1,arg_z)
     33584:      __(cmpri(cr7,temp0,nil_value))
     3359        __(extract_lisptag(imm0,temp0))
     3360        __(extract_lisptag(imm1,temp1))
     3361        __(cmpri(cr0,imm0,tag_list))
     3362        __(cmpri(cr1,imm1,tag_list))
     3363        __(beq cr7,8f)
     3364        __(bne cr0,9f)
     3365        __(_cdr(temp3,temp0))
     3366        __(bne cr1,9f)
     3367        __(cmpri(cr4,temp2,0))
     3368        __(cmpri(cr3,temp3,nil_value))
     3369        __(extract_lisptag(imm0,temp3))
     3370        __(cmpr(cr5,temp0,temp1))
     3371        __(bne cr3,5f)
     3372        __(addi arg_z,temp2,fixnumone)
     3373        __(blr)
     33745:      __(bne cr5,6f)
     3375        __(bne cr4,9f)
     33766:      __(_cdr(temp0,temp3))   
     3377        __(_cdr(temp1,temp1))
     3378        __(addi temp2,temp2,2<<fixnumshift)
     3379        __(b 4b)
     33808:     
     3381        __(mr arg_z,temp2)
     3382        __(blr)
     33839:     
    33593384        __(jump_builtin(_builtin_length,1))
    33603385
Note: See TracChangeset for help on using the changeset viewer.