Changeset 7458 for branches/working-0710


Ignore:
Timestamp:
Oct 16, 2007, 5:34:47 PM (12 years ago)
Author:
gb
Message:

try to detect exception in foreign context early

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0710/ccl/lisp-kernel/x86-exceptions.c

    r7418 r7458  
    11481148{
    11491149  TCR *tcr = get_interrupt_tcr(false);
    1150   area *vs = tcr->vs_area;
    1151   BytePtr current_sp = (BytePtr) current_stack_pointer();
    1152 
    1153   if ((current_sp >= vs->low) &&
    1154       (current_sp < vs->high)) {
    1155     handle_signal_on_foreign_stack(tcr,
    1156                                    signal_handler,
    1157                                    signum,
    1158                                    info,
    1159                                    context,
    1160                                    (LispObj)__builtin_return_address(0)
     1150#if 1
     1151  if (tcr->valence != TCR_STATE_LISP) {
     1152    FBug(context, "exception in foreign context");
     1153  }
     1154#endif
     1155  {
     1156    area *vs = tcr->vs_area;
     1157    BytePtr current_sp = (BytePtr) current_stack_pointer();
     1158
     1159
     1160    if ((current_sp >= vs->low) &&
     1161        (current_sp < vs->high)) {
     1162      handle_signal_on_foreign_stack(tcr,
     1163                                     signal_handler,
     1164                                     signum,
     1165                                     info,
     1166                                     context,
     1167                                     (LispObj)__builtin_return_address(0)
    11611168#ifdef DARWIN_GS_HACK
    1162                                  , false
    1163 #endif
    1164 
    1165                                    );
    1166   } else {
    1167     signal_handler(signum, info, context, tcr, 0);
     1169                                     , false
     1170#endif
     1171
     1172                                     );
     1173    } else {
     1174      signal_handler(signum, info, context, tcr, 0);
     1175    }
    11681176  }
    11691177}
Note: See TracChangeset for help on using the changeset viewer.