Changeset 7895


Ignore:
Timestamp:
Dec 12, 2007, 10:24:52 AM (13 years ago)
Author:
gb
Message:

After a couple of failed attempts, get the improvement to the
&key &allow-other-keys (no explicit keywords) case right: see if
the caller wants the incoming arguments preserved for &rest, and
discard them if not.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/lisp-kernel/x86-spentry64.s

    r7870 r7895  
    22442244        /* (in %imm1), copy all pairs to the temp stack   */
    22452245local_label(even):
    2246         __(lea tsp_frame.fixed_overhead(%imm1),%arg_z)
     2246        /* Get the keyword vector into arg_x, and its length into arg_y.  */
     2247        __(movl function_data_offset(%fn),%imm0_l)
     2248        __(movq function_data_offset(%fn,%imm0,node_size),%arg_x)
     2249        __(vector_length(%arg_x,%arg_y))
     2250        __(testq %arg_y,%arg_y)
     2251        __(jne 1f)
     2252        __(btq $keyword_flags_aok_bit,%temp1)
     2253        __(jnc 1f)
     2254
     2255        __(btq $keyword_flags_rest_bit,%temp1)
     2256        __(jc 0f)
     2257        __(addq %imm1,%rsp)
     22580:     
     2259        __(jmp *%ra0)
     22601:     
     2261        __(lea tsp_frame.fixed_overhead(%imm1),%arg_z)
    22472262        __(TSP_Alloc_Var(%arg_z,%imm0))
    224822632:      __(subq $node_size,%arg_z)
     
    22502265        __(cmpq %arg_z,%imm0)
    22512266        __(jne 2b)
    2252         /* Get the keyword vector into arg_x, and its length into arg_y.  */
    22532267        /* Push arg_y pairs of NILs.   */
    2254         __(movl function_data_offset(%fn),%imm0_l)
    2255         __(movq function_data_offset(%fn,%imm0,node_size),%arg_x)
    2256         __(vector_length(%arg_x,%arg_y))
    22572268        __(movq %arg_y,%imm0)
    22582269        __(jmp 4f)
Note: See TracChangeset for help on using the changeset viewer.