Lines Matching defs:unwind_exception
307 call_terminate(bool native_exception, _Unwind_Exception* unwind_exception)
309 __cxa_begin_catch(unwind_exception);
313 __cxa_exception* exception_header = (__cxa_exception*)(unwind_exception+1) - 1;
342 _Unwind_Exception* unwind_exception)
347 call_terminate(native_exception, unwind_exception);
365 _Unwind_Exception* unwind_exception)
370 call_terminate(native_exception, unwind_exception);
391 call_terminate(native_exception, unwind_exception);
412 unwind_exception)
417 call_terminate(false, unwind_exception);
457 void* adjustedPtr, _Unwind_Exception* unwind_exception)
462 call_terminate(false, unwind_exception);
479 unwind_exception);
490 get_thrown_object_ptr(_Unwind_Exception* unwind_exception)
492 // Even for foreign exceptions, the exception object is *probably* at unwind_exception + 1
494 void* adjustedPtr = unwind_exception + 1;
495 if (unwind_exception->exception_class == kOurDependentExceptionClass)
520 set_registers(_Unwind_Exception* unwind_exception, _Unwind_Context* context,
527 reinterpret_cast<uintptr_t>(unwind_exception));
556 _Unwind_Exception *unwind_exception,
618 call_terminate(native_exception, unwind_exception);
711 native_exception, unwind_exception);
725 results.adjustedPtr = get_thrown_object_ptr(unwind_exception);
733 call_terminate(native_exception, unwind_exception);
740 __cxa_exception* exception_header = (__cxa_exception*)(unwind_exception+1) - 1;
741 void* adjustedPtr = get_thrown_object_ptr(unwind_exception);
747 call_terminate(native_exception, unwind_exception);
769 call_terminate(native_exception, unwind_exception);
782 __cxa_exception* exception_header = (__cxa_exception*)(unwind_exception+1) - 1;
783 void* adjustedPtr = get_thrown_object_ptr(unwind_exception);
789 call_terminate(native_exception, unwind_exception);
793 adjustedPtr, unwind_exception))
813 call_terminate(native_exception, unwind_exception);
830 results.adjustedPtr = get_thrown_object_ptr(unwind_exception);
838 call_terminate(native_exception, unwind_exception);
855 results.adjustedPtr = get_thrown_object_ptr(unwind_exception);
878 call_terminate(native_exception, unwind_exception);
885 call_terminate(native_exception, unwind_exception);
944 _Unwind_Exception* unwind_exception, _Unwind_Context* context)
946 if (version != 1 || unwind_exception == 0 || context == 0)
956 scan_eh_tab(results, actions, native_exception, unwind_exception, context);
962 __cxa_exception* exception_header = (__cxa_exception*)(unwind_exception+1) - 1;
987 __cxa_exception* exception_header = (__cxa_exception*)(unwind_exception+1) - 1;
997 scan_eh_tab(results, actions, native_exception, unwind_exception, context);
1001 call_terminate(native_exception, unwind_exception);
1004 set_registers(unwind_exception, context, results);
1010 scan_eh_tab(results, actions, native_exception, unwind_exception, context);
1014 set_registers(unwind_exception, context, results);
1034 static _Unwind_Reason_Code continue_unwind(_Unwind_Exception* unwind_exception,
1037 if (__gnu_unwind_frame(unwind_exception, context) != _URC_OK)
1048 static void save_results_to_barrier_cache(_Unwind_Exception* unwind_exception,
1051 unwind_exception->barrier_cache.bitpattern[0] = (uint32_t)results.adjustedPtr;
1052 unwind_exception->barrier_cache.bitpattern[1] = (uint32_t)results.actionRecord;
1053 unwind_exception->barrier_cache.bitpattern[2] = (uint32_t)results.languageSpecificData;
1054 unwind_exception->barrier_cache.bitpattern[3] = (uint32_t)results.landingPad;
1055 unwind_exception->barrier_cache.bitpattern[4] = (uint32_t)results.ttypeIndex;
1059 const _Unwind_Exception* unwind_exception)
1061 results.adjustedPtr = (void*)unwind_exception->barrier_cache.bitpattern[0];
1062 results.actionRecord = (const uint8_t*)unwind_exception->barrier_cache.bitpattern[1];
1063 results.languageSpecificData = (const uint8_t*)unwind_exception->barrier_cache.bitpattern[2];
1064 results.landingPad = (uintptr_t)unwind_exception->barrier_cache.bitpattern[3];
1065 results.ttypeIndex = (int64_t)(int32_t)unwind_exception->barrier_cache.bitpattern[4];
1070 _Unwind_Exception* unwind_exception,
1073 if (unwind_exception == 0 || context == 0)
1076 bool native_exception = (unwind_exception->exception_class & get_vendor_and_language) ==
1083 _Unwind_SetGR(context, REG_UCB, reinterpret_cast<uint32_t>(unwind_exception));
1094 return continue_unwind(unwind_exception, context);
1097 scan_eh_tab(results, _UA_SEARCH_PHASE, native_exception, unwind_exception, context);
1100 unwind_exception->barrier_cache.sp = _Unwind_GetGR(context, REG_SP);
1102 save_results_to_barrier_cache(unwind_exception, results);
1107 return continue_unwind(unwind_exception, context);
1117 if (unwind_exception->barrier_cache.sp == _Unwind_GetGR(context, REG_SP))
1123 load_results_from_barrier_cache(results, unwind_exception);
1130 unwind_exception, context);
1132 call_terminate(native_exception, unwind_exception);
1136 set_registers(unwind_exception, context, results);
1143 scan_eh_tab(results, _UA_CLEANUP_PHASE, native_exception, unwind_exception, context);
1149 // internal data structures, so that __cxa_end_cleanup() can get unwind_exception from
1151 __cxa_begin_cleanup(unwind_exception);
1154 set_registers(unwind_exception, context, results);
1160 return continue_unwind(unwind_exception, context);
1164 return continue_unwind(unwind_exception, context);
1177 _Unwind_Exception* unwind_exception = static_cast<_Unwind_Exception*>(arg);
1178 if (unwind_exception == 0)
1179 call_terminate(false, unwind_exception);
1180 __cxa_begin_catch(unwind_exception);
1182 (unwind_exception->exception_class & get_vendor_and_language) ==
1191 old_exception_header = (__cxa_exception*)(unwind_exception+1) - 1;
1197 ttypeIndex = (int64_t)(int32_t)unwind_exception->barrier_cache.bitpattern[4];
1198 lsda = (const uint8_t*)unwind_exception->barrier_cache.bitpattern[2];
1258 excpType, adjustedPtr, unwind_exception))
1287 excpType, adjustedPtr, unwind_exception))