Lines Matching refs:results
502 const scan_results& results)
507 static_cast<uintptr_t>(results.ttypeIndex));
508 _Unwind_SetIP(context, results.landingPad);
532 static void scan_eh_tab(scan_results &results, _Unwind_Action actions,
536 // Initialize results to found nothing but an error
537 results.ttypeIndex = 0;
538 results.actionRecord = 0;
539 results.languageSpecificData = 0;
540 results.landingPad = 0;
541 results.adjustedPtr = 0;
542 results.reason = _URC_FATAL_PHASE1_ERROR;
551 results.reason = _URC_FATAL_PHASE1_ERROR;
562 results.reason = _URC_FATAL_PHASE2_ERROR;
570 results.reason = _URC_FATAL_PHASE1_ERROR;
578 results.reason = _URC_CONTINUE_UNWIND;
581 results.languageSpecificData = lsda;
592 results.reason = _URC_CONTINUE_UNWIND;
652 results.reason = _URC_CONTINUE_UNWIND;
666 results.ttypeIndex = 0; // Redundant but clarifying
667 results.landingPad = landingPad;
668 results.reason = _URC_HANDLER_FOUND;
672 results.reason = _URC_CONTINUE_UNWIND;
700 results.ttypeIndex = ttypeIndex;
701 results.actionRecord = actionRecord;
702 results.landingPad = landingPad;
703 results.adjustedPtr = get_thrown_object_ptr(unwind_exception);
704 results.reason = _URC_HANDLER_FOUND;
736 results.ttypeIndex = ttypeIndex;
737 results.actionRecord = actionRecord;
738 results.landingPad = landingPad;
739 results.adjustedPtr = adjustedPtr;
740 results.reason = _URC_HANDLER_FOUND;
780 results.ttypeIndex = ttypeIndex;
781 results.actionRecord = actionRecord;
782 results.landingPad = landingPad;
783 results.adjustedPtr = adjustedPtr;
784 results.reason = _URC_HANDLER_FOUND;
805 results.ttypeIndex = ttypeIndex;
806 results.actionRecord = actionRecord;
807 results.landingPad = landingPad;
808 results.adjustedPtr = get_thrown_object_ptr(unwind_exception);
809 results.reason = _URC_HANDLER_FOUND;
830 results.ttypeIndex = ttypeIndex;
831 results.actionRecord = actionRecord;
832 results.landingPad = landingPad;
833 results.adjustedPtr = get_thrown_object_ptr(unwind_exception);
834 results.reason = _URC_HANDLER_FOUND;
843 results.reason = _URC_CONTINUE_UNWIND;
929 scan_results results;
934 scan_eh_tab(results, actions, native_exception, unwind_exception, context);
935 if (results.reason == _URC_HANDLER_FOUND)
937 // Found one. Can we cache the results somewhere to optimize phase 2?
941 exception_header->handlerSwitchValue = static_cast<int>(results.ttypeIndex);
942 exception_header->actionRecord = results.actionRecord;
943 exception_header->languageSpecificData = results.languageSpecificData;
944 exception_header->catchTemp = reinterpret_cast<void*>(results.landingPad);
945 exception_header->adjustedPtr = results.adjustedPtr;
949 // Did not find a catching-handler. Return the results of the scan
952 return results.reason;
961 // Did we cache the results of the scan?
964 // Yes, reload the results from the cache.
966 results.ttypeIndex = exception_header->handlerSwitchValue;
967 results.actionRecord = exception_header->actionRecord;
968 results.languageSpecificData = exception_header->languageSpecificData;
969 results.landingPad = reinterpret_cast<uintptr_t>(exception_header->catchTemp);
970 results.adjustedPtr = exception_header->adjustedPtr;
974 // No, do the scan again to reload the results.
975 scan_eh_tab(results, actions, native_exception, unwind_exception, context);
978 if (results.reason != _URC_HANDLER_FOUND)
982 set_registers(unwind_exception, context, results);
988 scan_eh_tab(results, actions, native_exception, unwind_exception, context);
989 if (results.reason == _URC_HANDLER_FOUND)
992 set_registers(unwind_exception, context, results);
995 // Did not find a cleanup. Return the results of the scan
998 return results.reason;
1024 const scan_results& results)
1026 unwind_exception->barrier_cache.bitpattern[0] = (uint32_t)results.adjustedPtr;
1027 unwind_exception->barrier_cache.bitpattern[1] = (uint32_t)results.actionRecord;
1028 unwind_exception->barrier_cache.bitpattern[2] = (uint32_t)results.languageSpecificData;
1029 unwind_exception->barrier_cache.bitpattern[3] = (uint32_t)results.landingPad;
1030 unwind_exception->barrier_cache.bitpattern[4] = (uint32_t)results.ttypeIndex;
1033 static void load_results_from_barrier_cache(scan_results& results,
1036 results.adjustedPtr = (void*)unwind_exception->barrier_cache.bitpattern[0];
1037 results.actionRecord = (const uint8_t*)unwind_exception->barrier_cache.bitpattern[1];
1038 results.languageSpecificData = (const uint8_t*)unwind_exception->barrier_cache.bitpattern[2];
1039 results.landingPad = (uintptr_t)unwind_exception->barrier_cache.bitpattern[3];
1040 results.ttypeIndex = (int64_t)(int32_t)unwind_exception->barrier_cache.bitpattern[4];
1087 scan_results results;
1091 scan_eh_tab(results, _UA_SEARCH_PHASE, native_exception, unwind_exception, context);
1092 if (results.reason == _URC_HANDLER_FOUND)
1096 save_results_to_barrier_cache(unwind_exception, results);
1100 if (results.reason == _URC_CONTINUE_UNWIND)
1102 return results.reason;
1112 load_results_from_barrier_cache(results, unwind_exception);
1113 results.reason = _URC_HANDLER_FOUND;
1118 scan_eh_tab(results, static_cast<_Unwind_Action>(_UA_CLEANUP_PHASE | _UA_HANDLER_FRAME),
1120 if (results.reason != _URC_HANDLER_FOUND) // phase1 search should guarantee to find one
1125 set_registers(unwind_exception, context, results);
1132 results, _UA_CLEANUP_PHASE, native_exception, unwind_exception, context);
1133 if (results.reason == _URC_HANDLER_FOUND)
1143 set_registers(unwind_exception, context, results);
1148 if (results.reason == _URC_CONTINUE_UNWIND)
1150 return results.reason;