diff options
Diffstat (limited to 'runtime/GCCLibraries/libexception/SJLJ-Exception.cpp')
-rw-r--r-- | runtime/GCCLibraries/libexception/SJLJ-Exception.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/runtime/GCCLibraries/libexception/SJLJ-Exception.cpp b/runtime/GCCLibraries/libexception/SJLJ-Exception.cpp index fea2d4128f..8bc13e7659 100644 --- a/runtime/GCCLibraries/libexception/SJLJ-Exception.cpp +++ b/runtime/GCCLibraries/libexception/SJLJ-Exception.cpp @@ -1,8 +1,16 @@ +//===- SJLJ-Exception.cpp - SetJmp/LongJmp Exception Handling -------------===// +// +// This file implements the API used by the Setjmp/Longjmp exception handling +// runtime library. +// +//===----------------------------------------------------------------------===// #include "SJLJ-Exception.h" #include <cstdlib> #include <cassert> +// get_sjlj_exception - Adjust the llvm_exception pointer to be an appropriate +// llvm_sjlj_exception pointer. inline llvm_sjlj_exception *get_sjlj_exception(llvm_exception *E) { assert(E->ExceptionType == SJLJException); return (llvm_sjlj_exception*)(E+1) - 1; @@ -16,6 +24,9 @@ struct SetJmpMapEntry { SetJmpMapEntry *Next; }; +// SJLJDestructor - This function is used to free the exception when +// language-indent code needs to destroy the exception without knowing exactly +// what type it is. static void SJLJDestructor(llvm_exception *E) { free(get_sjlj_exception(E)); } |