< prev index next >

src/os/windows/vm/os_windows.hpp

Print this page
rev 13142 : 8183198: Factor out thread state serialization into a proper helper function
Reviewed-by:

*** 121,130 **** --- 121,145 ---- _thread_ptr_offset = offset; } static inline int get_thread_ptr_offset() { return _thread_ptr_offset; } }; + static void write_memory_serialize_page_with_handler(JavaThread* thread) { + // Due to chained nature of SEH handlers we have to be sure + // that our handler is always last handler before an attempt to write + // into serialization page - it can fault if we access this page + // right in the middle of protect/unprotect sequence by remote + // membar logic. + // __try/__except are very lightweight operations (only several + // instructions not affecting control flow directly on x86) + // so we can use it here, on very time critical path + __try { + write_memory_serialize_page(thread); + } __except (win32::serialize_fault_filter((_EXCEPTION_POINTERS*)_exception_info())) + {} + } + /* * Crash protection for the watcher thread. Wrap the callback * with a __try { call() } * To be able to use this - don't take locks, don't rely on destructors, * don't make OS library calls, don't allocate memory, don't print,
< prev index next >