Mercurial > hg > graal-jvmci-8
comparison src/os/windows/vm/os_windows.cpp @ 1215:f19bf22685cc
Merge
author | dcubed |
---|---|
date | Tue, 02 Feb 2010 11:08:17 -0700 |
parents | 167c2986d91b 0fc941df6fb7 |
children | 3b3d12e645e7 |
comparison
equal
deleted
inserted
replaced
1213:6deeaebad47a | 1215:f19bf22685cc |
---|---|
1 /* | 1 /* |
2 * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. | 2 * Copyright 1997-2010 Sun Microsystems, Inc. All Rights Reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
140 void os::run_periodic_checks() { | 140 void os::run_periodic_checks() { |
141 return; | 141 return; |
142 } | 142 } |
143 | 143 |
144 #ifndef _WIN64 | 144 #ifndef _WIN64 |
145 // previous UnhandledExceptionFilter, if there is one | |
146 static LPTOP_LEVEL_EXCEPTION_FILTER prev_uef_handler = NULL; | |
147 | |
145 LONG WINAPI Handle_FLT_Exception(struct _EXCEPTION_POINTERS* exceptionInfo); | 148 LONG WINAPI Handle_FLT_Exception(struct _EXCEPTION_POINTERS* exceptionInfo); |
146 #endif | 149 #endif |
147 void os::init_system_properties_values() { | 150 void os::init_system_properties_values() { |
148 /* sysclasspath, java_home, dll_dir */ | 151 /* sysclasspath, java_home, dll_dir */ |
149 { | 152 { |
258 Arguments::set_endorsed_dirs(buf); | 261 Arguments::set_endorsed_dirs(buf); |
259 #undef ENDORSED_DIR | 262 #undef ENDORSED_DIR |
260 } | 263 } |
261 | 264 |
262 #ifndef _WIN64 | 265 #ifndef _WIN64 |
263 SetUnhandledExceptionFilter(Handle_FLT_Exception); | 266 // set our UnhandledExceptionFilter and save any previous one |
267 prev_uef_handler = SetUnhandledExceptionFilter(Handle_FLT_Exception); | |
264 #endif | 268 #endif |
265 | 269 |
266 // Done | 270 // Done |
267 return; | 271 return; |
268 } | 272 } |
1967 } | 1971 } |
1968 | 1972 |
1969 #ifndef _WIN64 | 1973 #ifndef _WIN64 |
1970 //----------------------------------------------------------------------------- | 1974 //----------------------------------------------------------------------------- |
1971 LONG WINAPI Handle_FLT_Exception(struct _EXCEPTION_POINTERS* exceptionInfo) { | 1975 LONG WINAPI Handle_FLT_Exception(struct _EXCEPTION_POINTERS* exceptionInfo) { |
1972 // handle exception caused by native mothod modifying control word | 1976 // handle exception caused by native method modifying control word |
1973 PCONTEXT ctx = exceptionInfo->ContextRecord; | 1977 PCONTEXT ctx = exceptionInfo->ContextRecord; |
1974 DWORD exception_code = exceptionInfo->ExceptionRecord->ExceptionCode; | 1978 DWORD exception_code = exceptionInfo->ExceptionRecord->ExceptionCode; |
1975 | 1979 |
1976 switch (exception_code) { | 1980 switch (exception_code) { |
1977 case EXCEPTION_FLT_DENORMAL_OPERAND: | 1981 case EXCEPTION_FLT_DENORMAL_OPERAND: |
1988 // Mask out pending FLT exceptions | 1992 // Mask out pending FLT exceptions |
1989 ctx->FloatSave.StatusWord &= 0xffffff00; | 1993 ctx->FloatSave.StatusWord &= 0xffffff00; |
1990 return EXCEPTION_CONTINUE_EXECUTION; | 1994 return EXCEPTION_CONTINUE_EXECUTION; |
1991 } | 1995 } |
1992 } | 1996 } |
1997 | |
1998 if (prev_uef_handler != NULL) { | |
1999 // We didn't handle this exception so pass it to the previous | |
2000 // UnhandledExceptionFilter. | |
2001 return (prev_uef_handler)(exceptionInfo); | |
2002 } | |
2003 | |
1993 return EXCEPTION_CONTINUE_SEARCH; | 2004 return EXCEPTION_CONTINUE_SEARCH; |
1994 } | 2005 } |
1995 #else //_WIN64 | 2006 #else //_WIN64 |
1996 /* | 2007 /* |
1997 On Windows, the mxcsr control bits are non-volatile across calls | 2008 On Windows, the mxcsr control bits are non-volatile across calls |