Changeset 529


Ignore:
Timestamp:
Feb 11, 2004, 7:17:20 PM (21 years ago)
Author:
Gary Byers
Message:

Fix a lot of the cases broken by removal of extract_2_lisptags_.

File:
1 edited

Legend:

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

    r522 r529  
    467467        __(b misc_ref_common)
    468468       
    469        
     469
    470470/* Is it worth trying to avoid (postpone) consing here ? */
    471471_spentry(newblocktag)
     
    943943        __(li arg_z,t_value)
    944944        __(bne cr0,9f)
    945         __(str(arg_y,4(imm0)))
     945        __(str(arg_y,node_size(imm0)))
    946946        __(str(arg_z,0(imm0)))
    947947        __(b 9f)
     
    13381338_spentry(getxlong)
    13391339        __(extract_lisptag(imm0,arg_z))
    1340         __(cmpri(imm0,tag_fixnum))
     1340        __(cmpri(cr0,imm0,tag_fixnum))
    13411341        __(cmpri(cr1,imm0,tag_misc))
    13421342        __(unbox_fixnum(imm0,arg_z))
    1343         __(beqlr)
     1343        __(beqlr cr0)
    13441344        __(mr temp0,arg_z)
    13451345        __(bne- cr1,local_label(error))
     
    13551355        __(beq cr1,local_label(big1))
    13561356        __(beq cr0,local_label(big1))
    1357         __(bne cr7,local_label(extended))
     1357        __(bne cr7,local_label(error))
    13581358
    13591359local_label(big2):
     
    13651365        __(blr)
    13661366
    1367 local_label(extended):
    1368         /* Handle extended strings. Maybe later handle displaced strings */
    1369         __(cmpri(cr0,imm0,(4<<num_subtag_bits)|subtag_simple_general_string))
    1370         __(bne cr0,local_label(error))
    1371 
    1372         __(vref16(imm0,temp0,3))
    1373         __(cmpri(cr0,imm0,256))
    1374         __(vref16(imm1,temp0,2))
    1375         __(cmpri(cr1,imm1,256))
    1376         __(rlwimi imm0,imm1,8,16,23)
    1377         __(vref16(imm1,temp0,1))
    1378         __(bge cr0,local_label(error))
    1379         __(cmpri(cr0,imm1,256))
    1380         __(rlwimi imm0,imm1,16,8,15)
    1381         __(vref16(imm1,temp0,0))
    1382         __(bge cr1,local_label(error))
    1383         __(cmpri(cr1,imm1,256))
    1384         __(rlwimi imm0,imm1,24,0,7)
    1385         __(bge cr0,local_label(error))
    1386         __(bge cr1,local_label(error))
    1387         __(blr)
    13881367
    13891368local_label(error):
     
    28662845        __(beq 9f)              /* Null list is proper */
    286728460:     
    2868         __(trap_unless_lisptag_equal(temp0,tag_list,imm0))
     2847        __(trap_unless_list(temp0,imm0))
    28692848        __(_cdr(temp2,temp0))   /* (null (cdr fast)) ? */
    28702849        __(cmpri(temp2,nil_value))
    2871         __(trap_unless_lisptag_equal(temp2,tag_list,imm0))
     2850        __(trap_unless_list(temp2,imm0))
    28722851        __(_cdr(temp0,temp2))
    28732852        __(beq 9f)
     
    31723151        __(cmpri(cr1,imm1,tag_fixnum))
    31733152        __(bne- cr0,1f)
    3174         __(bne- cr0,1f)
     3153        __(bne- cr1,1f)
    31753154        __(subo. arg_z,arg_y,arg_z)
    31763155        __(bnslr+)
     
    32273206        __(extract_lisptag(imm1,arg_z))
    32283207        __(cmpri(cr0,imm0,tag_fixnum))
    3229         __(cmpri(cr1,imm0,tag_fixnum))
     3208        __(cmpri(cr1,imm1,tag_fixnum))
    32303209        __(cmpr(cr2,arg_y,arg_z))
    32313210        __(bne- cr0,1f)
     
    32423221        __(extract_lisptag(imm1,arg_z))
    32433222        __(cmpri(cr0,imm0,tag_fixnum))
    3244         __(cmpri(cr1,imm0,tag_fixnum))
     3223        __(cmpri(cr1,imm1,tag_fixnum))
    32453224        __(cmpr(cr2,arg_y,arg_z))
    32463225        __(bne- cr0,1f)
     
    32573236        __(extract_lisptag(imm1,arg_z))
    32583237        __(cmpri(cr0,imm0,tag_fixnum))
    3259         __(cmpri(cr1,imm0,tag_fixnum))
     3238        __(cmpri(cr1,imm1,tag_fixnum))
    32603239        __(cmpr(cr2,arg_y,arg_z))
    32613240        __(bne- cr0,1f)
     
    32723251        __(extract_lisptag(imm1,arg_z))
    32733252        __(cmpri(cr0,imm0,tag_fixnum))
    3274         __(cmpri(cr1,imm0,tag_fixnum))
     3253        __(cmpri(cr1,imm1,tag_fixnum))
    32753254        __(cmpr(cr2,arg_y,arg_z))
    32763255        __(bne- cr0,1f)
     
    32873266        __(extract_lisptag(imm1,arg_z))
    32883267        __(cmpri(cr0,imm0,tag_fixnum))
    3289         __(cmpri(cr1,imm0,tag_fixnum))
     3268        __(cmpri(cr1,imm1,tag_fixnum))
    32903269        __(cmpr(cr2,arg_y,arg_z))
    32913270        __(bne- cr0,1f)
    3292         __(bne- cr0,1f)
     3271        __(bne- cr1,1f)
    32933272        __(li arg_z,nil_value)
    32943273        __(bgtlr cr2)
     
    33673346        __(cmpri(arg_z,nil_value))
    33683347        __(beqlr)
    3369 1:      __(trap_unless_lisptag_equal(arg_z,tag_list,imm0))
     33481:      __(trap_unless_list(arg_z,imm0))
    33703349        __(_car(arg_x,arg_z))
    33713350        __(_cdr(arg_z,arg_z))
     
    33733352        __(cmpri(cr1,arg_z,nil_value))
    33743353        __(beq cr2,2f)
    3375         __(trap_unless_lisptag_equal(arg_x,tag_list,imm0))
     3354        __(trap_unless_list(arg_x,imm0))
    33763355        __(_car(temp0,arg_x))
    33773356        __(cmpr(temp0,arg_y))
     
    33873366        __(cmpri(cr1,arg_z,nil_value))
    33883367        __(b 2f)
    3389 1:      __(trap_unless_lisptag_equal(arg_z,tag_list,imm0))
     33681:      __(trap_unless_list(arg_z,imm0))
    33903369        __(_car(arg_x,arg_z))
    33913370        __(_cdr(temp0,arg_z))
     
    34333412        __(extract_lisptag(imm1,arg_z))
    34343413        __(cmpri(cr0,imm0,tag_fixnum))
    3435         __(cmpri(cr1,imm0,tag_fixnum))
     3414        __(cmpri(cr1,imm1,tag_fixnum))
    34363415        __(bne- cr0,1f)
    34373416        __(bne- cr1,1f)
     
    34483427        __(cmpri(cr3,imm1,tag_fixnum))
    34493428        __(cmpri(cr2,arg_z,-(29<<2)))   /* !! 2 =  fixnumshift */
    3450         __(bne- 9f)
     3429        __(bne- cr0,9f)
    34513430        __(bne- cr3,9f)
    34523431        __(bne cr1,0f)
     
    35213500        __(extract_lisptag(imm1,arg_z))
    35223501        __(cmpri(cr0,imm0,tag_fixnum))
    3523         __(cmpri(cr0,imm1,tag_fixnum))
     3502        __(cmpri(cr1,imm1,tag_fixnum))
    35243503        __(bne- cr0,1f)
    35253504        __(bne- cr1,1f)
     
    43244303        __(beq 9f)              /* Null list is proper */
    432543040:     
    4326         __(trap_unless_lisptag_equal(temp4,tag_list,imm0))
     4305        __(trap_unless_list(temp4,imm0))
    43274306        __(_cdr(temp2,temp4))   /* (null (cdr fast)) ? */
    43284307        __(cmpri(temp2,nil_value))
    4329         __(trap_unless_lisptag_equal(temp2,tag_list,imm0))
     4308        __(trap_unless_list(temp2,imm0))
    43304309        __(_cdr(temp4,temp2))
    43314310        __(beq 9f)
Note: See TracChangeset for help on using the changeset viewer.