Changeset 13176 for release


Ignore:
Timestamp:
Nov 7, 2009, 11:19:39 PM (10 years ago)
Author:
gb
Message:

Propagate r13175 (x8632 image relocation/large functions) and
r13171 (x8632 callback winabi/ObjC exception disentanglement)
to 1.4.

Location:
release/1.4/source/lisp-kernel
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • release/1.4/source/lisp-kernel/image.c

    r13075 r13176  
    6565        int skip = ((int) start[1])+1;
    6666#else
    67         int skip = ((unsigned short)start[1])+1;
    6867        extern void update_self_references(LispObj *);
     68        extern natural imm_word_count(LispObj);
     69
     70        natural skip = (natural)imm_word_count(((LispObj)start)+fulltag_misc)+1;
    6971        update_self_references(start);
    7072#endif
     
    9193      ++start;
    9294    }
     95  }
     96  if (start > end) {
     97    Bug(NULL, "Overran area bounds in relocate_area_contents");
    9398  }
    9499}
  • release/1.4/source/lisp-kernel/x86-gc.c

    r13075 r13176  
    2828
    2929#ifdef X8632
    30 static inline natural
     30inline natural
    3131imm_word_count(LispObj fn)
    3232{
  • release/1.4/source/lisp-kernel/x86-spentry32.s

    r12374 r13176  
    43244324        __(shrl $24,%ecx)
    43254325        __(andl $0x007fffff,%eax) /* callback index */
    4326         __(movl %ecx,-12(%ebp))
     4326        __(movl %ecx,-20(%ebp))
    43274327        /* If the C stack is 16-byte aligned by convention,
    43284328           it should still be, and this'll be a NOP. */
     
    43884388        __(pop %esi)
    43894389        __(pop %edi)
     4390        __(movl -12(%ebp),%ecx) /* magic value for ObjC bridge */
    43904391        __(cmpb $1,-16(%ebp))
    4391         __(movl -12(%ebp),%ecx) /* magic value for ObjC bridge or winapi */
    43924392        __(jae 1f)
    43934393        __(movl -8(%ebp),%eax)
    43944394        __(movl -4(%ebp),%edx)
    43954395        __ifdef([WIN_32])
    4396          __(testl %ecx,%ecx)
     4396         __(cmpl $0,-20(%ebp))
    43974397         __(jne local_label(winapi_return))
    43984398        __endif
     
    44114411        __(flds -8(%ebp))
    44124412        __ifdef([WIN_32])
    4413          __(testl %ecx,%ecx)
     4413         __(cmpl $0,-20(%ebp))
    44144414         __(jne local_label(winapi_return))
    44154415        __endif
     
    44194419        __(fldl -8(%ebp))
    44204420        __ifdef([WIN_32])
    4421          __(testl %ecx,%ecx)
     4421         __(cmpl $0,-20(%ebp))
    44224422         __(jne local_label(winapi_return))
    44234423        __endif
     
    44264426        __ifdef([WIN_32])
    44274427local_label(winapi_return):
     4428          __(movl -20(%ebp),%ecx)
    44284429          __(leave)
    44294430         /* %ecx is non-zero and contains count of arg words to pop */
Note: See TracChangeset for help on using the changeset viewer.