Changeset 309 for trunk/openjdk/hotspot/src/os/windows
- Timestamp:
- Feb 13, 2012, 10:07:12 PM (14 years ago)
- Location:
- trunk/openjdk
- Files:
-
- 5 deleted
- 23 edited
- 4 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/openjdk
- Property svn:mergeinfo changed
/branches/vendor/oracle/openjdk6/b24 (added) merged: 308 /branches/vendor/oracle/openjdk6/current merged: 307
- Property svn:mergeinfo changed
-
trunk/openjdk/hotspot/src/os/windows/vm/attachListener_windows.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2005, 20 06, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 # include "incls/_precompiled.incl" 26 # include "incls/_attachListener_windows.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/interfaceSupport.hpp" 27 #include "runtime/os.hpp" 28 #include "services/attachListener.hpp" 29 #include "services/dtraceAttacher.hpp" 27 30 28 31 #include <windows.h> -
trunk/openjdk/hotspot/src/os/windows/vm/c1_globals_windows.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2000, 20 01, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_WINDOWS_VM_C1_GLOBALS_WINDOWS_HPP 26 #define OS_WINDOWS_VM_C1_GLOBALS_WINDOWS_HPP 27 28 #include "utilities/globalDefinitions.hpp" 29 #include "utilities/macros.hpp" 30 25 31 // 26 32 // Sets the default values for operating system dependent flags used by the 27 33 // client compiler. (see c1_globals.hpp) 28 34 // 35 36 #endif // OS_WINDOWS_VM_C1_GLOBALS_WINDOWS_HPP -
trunk/openjdk/hotspot/src/os/windows/vm/c2_globals_windows.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2000, 20 01, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_WINDOWS_VM_C2_GLOBALS_WINDOWS_HPP 26 #define OS_WINDOWS_VM_C2_GLOBALS_WINDOWS_HPP 27 28 #include "utilities/globalDefinitions.hpp" 29 #include "utilities/macros.hpp" 30 25 31 // 26 32 // Sets the default values for operating system dependent flags used by the 27 33 // server compiler. (see c2_globals.hpp) 28 34 // 35 36 #endif // OS_WINDOWS_VM_C2_GLOBALS_WINDOWS_HPP -
trunk/openjdk/hotspot/src/os/windows/vm/chaitin_windows.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 06, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_chaitin_windows.cpp.incl" 25 #include "precompiled.hpp" 26 #include "opto/chaitin.hpp" 27 #include "opto/machnode.hpp" 27 28 28 29 // Disallow the use of the frame pointer (EBP) for implicit null exceptions -
trunk/openjdk/hotspot/src/os/windows/vm/dtraceJSDT_windows.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1997, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_dtraceJSDT_windows.cpp.incl" 25 #include "precompiled.hpp" 26 #include "classfile/javaClasses.hpp" 27 #include "code/codeBlob.hpp" 28 #include "memory/allocation.hpp" 29 #include "prims/jvm.h" 30 #include "runtime/dtraceJSDT.hpp" 31 #include "runtime/jniHandles.hpp" 32 #include "runtime/os.hpp" 33 #include "runtime/signature.hpp" 34 #include "utilities/globalDefinitions.hpp" 27 35 28 36 int DTraceJSDT::pd_activate( -
trunk/openjdk/hotspot/src/os/windows/vm/globals_windows.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2005, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_WINDOWS_VM_GLOBALS_WINDOWS_HPP 26 #define OS_WINDOWS_VM_GLOBALS_WINDOWS_HPP 27 25 28 // 26 29 // Defines Windows specific flags. They are not available on other platforms. … … 41 44 define_pd_global(bool, UseOSErrorReporting, false); // for now. 42 45 define_pd_global(bool, UseThreadPriorities, true) ; 46 47 #endif // OS_WINDOWS_VM_GLOBALS_WINDOWS_HPP -
trunk/openjdk/hotspot/src/os/windows/vm/interfaceSupport_windows.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_WINDOWS_VM_INTERFACESUPPORT_WINDOWS_HPP 26 #define OS_WINDOWS_VM_INTERFACESUPPORT_WINDOWS_HPP 27 25 28 // Contains inlined functions for class InterfaceSupport 26 29 … … 40 43 {} 41 44 } 45 46 #endif // OS_WINDOWS_VM_INTERFACESUPPORT_WINDOWS_HPP -
trunk/openjdk/hotspot/src/os/windows/vm/jvm_windows.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_jvm_windows.cpp.incl" 25 #include "precompiled.hpp" 26 #include "prims/jvm.h" 27 #include "runtime/interfaceSupport.hpp" 28 #include "runtime/osThread.hpp" 27 29 28 30 #include <signal.h> -
trunk/openjdk/hotspot/src/os/windows/vm/jvm_windows.h
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 05, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * -
trunk/openjdk/hotspot/src/os/windows/vm/mutex_windows.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 06, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 # include "incls/_precompiled.incl" 26 # include "incls/_mutex_windows.cpp.incl" 25 #include "precompiled.hpp" 26 #include "mutex_windows.inline.hpp" 27 #include "runtime/interfaceSupport.hpp" 28 #include "runtime/mutex.hpp" 29 #include "thread_windows.inline.hpp" 30 #include "utilities/events.hpp" 27 31 28 32 // put OS-includes here -
trunk/openjdk/hotspot/src/os/windows/vm/mutex_windows.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 03, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_WINDOWS_VM_MUTEX_WINDOWS_INLINE_HPP 26 #define OS_WINDOWS_VM_MUTEX_WINDOWS_INLINE_HPP 27 28 #include "os_windows.inline.hpp" 29 #include "runtime/interfaceSupport.hpp" 30 #include "thread_windows.inline.hpp" 31 32 #endif // OS_WINDOWS_VM_MUTEX_WINDOWS_INLINE_HPP -
trunk/openjdk/hotspot/src/os/windows/vm/osThread_windows.cpp
r278 r309 1 1 /* 2 * Copyright (c) 1998, 20 00, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_osThread_windows.cpp.incl" 25 // no precompiled headers 26 #include "runtime/atomic.hpp" 27 #include "runtime/handles.inline.hpp" 28 #include "runtime/mutexLocker.hpp" 29 #include "runtime/os.hpp" 30 #include "runtime/osThread.hpp" 31 #include "runtime/safepoint.hpp" 32 #include "runtime/vmThread.hpp" 33 #ifdef TARGET_ARCH_x86 34 # include "assembler_x86.inline.hpp" 35 #endif 26 36 27 37 void OSThread::pd_initialize() { -
trunk/openjdk/hotspot/src/os/windows/vm/osThread_windows.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1997, 20 01, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_WINDOWS_VM_OSTHREAD_WINDOWS_HPP 26 #define OS_WINDOWS_VM_OSTHREAD_WINDOWS_HPP 24 27 25 28 typedef void* HANDLE; … … 65 68 void pd_initialize(); 66 69 void pd_destroy(); 70 71 #endif // OS_WINDOWS_VM_OSTHREAD_WINDOWS_HPP -
trunk/openjdk/hotspot/src/os/windows/vm/os_share_windows.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1999, 20 01, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_WINDOWS_VM_OS_SHARE_WINDOWS_HPP 26 #define OS_WINDOWS_VM_OS_SHARE_WINDOWS_HPP 27 25 28 // Defines the interfaces to Windows operating system that vary across platforms 29 30 #endif // OS_WINDOWS_VM_OS_SHARE_WINDOWS_HPP -
trunk/openjdk/hotspot/src/os/windows/vm/os_windows.cpp
r297 r309 1 1 /* 2 * Copyrigh t(c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.2 * CopyrighT (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 28 28 #endif 29 29 30 // do not include precompiled header file 31 # include "incls/_os_windows.cpp.incl" 30 // no precompiled headers 31 #include "classfile/classLoader.hpp" 32 #include "classfile/systemDictionary.hpp" 33 #include "classfile/vmSymbols.hpp" 34 #include "code/icBuffer.hpp" 35 #include "code/vtableStubs.hpp" 36 #include "compiler/compileBroker.hpp" 37 #include "interpreter/interpreter.hpp" 38 #include "jvm_windows.h" 39 #include "memory/allocation.inline.hpp" 40 #include "memory/filemap.hpp" 41 #include "mutex_windows.inline.hpp" 42 #include "oops/oop.inline.hpp" 43 #include "os_share_windows.hpp" 44 #include "prims/jniFastGetField.hpp" 45 #include "prims/jvm.h" 46 #include "prims/jvm_misc.hpp" 47 #include "runtime/arguments.hpp" 48 #include "runtime/extendedPC.hpp" 49 #include "runtime/globals.hpp" 50 #include "runtime/interfaceSupport.hpp" 51 #include "runtime/java.hpp" 52 #include "runtime/javaCalls.hpp" 53 #include "runtime/mutexLocker.hpp" 54 #include "runtime/objectMonitor.hpp" 55 #include "runtime/osThread.hpp" 56 #include "runtime/perfMemory.hpp" 57 #include "runtime/sharedRuntime.hpp" 58 #include "runtime/statSampler.hpp" 59 #include "runtime/stubRoutines.hpp" 60 #include "runtime/threadCritical.hpp" 61 #include "runtime/timer.hpp" 62 #include "services/attachListener.hpp" 63 #include "services/runtimeService.hpp" 64 #include "thread_windows.inline.hpp" 65 #include "utilities/decoder.hpp" 66 #include "utilities/defaultStream.hpp" 67 #include "utilities/events.hpp" 68 #include "utilities/growableArray.hpp" 69 #include "utilities/vmError.hpp" 70 #ifdef TARGET_ARCH_x86 71 # include "assembler_x86.inline.hpp" 72 # include "nativeInst_x86.hpp" 73 #endif 74 #ifdef COMPILER1 75 #include "c1/c1_Runtime1.hpp" 76 #endif 77 #ifdef COMPILER2 78 #include "opto/runtime.hpp" 79 #endif 32 80 33 81 #if defined(_DEBUG) && !defined(__WIN32OS2__) … … 1051 1099 } 1052 1100 1053 const char* os::dll_file_extension() { return ".dll"; }1054 1055 1101 // This must be hard coded because it's the system's temporary 1056 1102 // directory not the java application's temp directory, ala java.io.tmpdir. … … 1074 1120 void os::dll_build_name(char *buffer, size_t buflen, 1075 1121 const char* pname, const char* fname) { 1076 // Copied from libhpi1077 1122 const size_t pnamelen = pname ? strlen(pname) : 0; 1078 1123 const char c = (pnamelen > 0) ? pname[pnamelen-1] : 0; … … 1380 1425 bool os::dll_address_to_function_name(address addr, char *buf, 1381 1426 int buflen, int *offset) { 1382 // Unimplemented on Windows - in order to use SymGetSymFromAddr(), 1383 // we need to initialize imagehlp/dbghelp, then load symbol table 1384 // for every module. That's too much work to do after a fatal error. 1385 // For an example on how to implement this function, see 1.4.2. 1386 if (offset) *offset = -1; 1387 if (buf) buf[0] = '\0'; 1427 if (Decoder::decode(addr, buf, buflen, offset) == Decoder::no_error) { 1428 return true; 1429 } 1430 if (offset != NULL) *offset = -1; 1431 if (buf != NULL) buf[0] = '\0'; 1388 1432 return false; 1389 }1390 1391 void* os::dll_lookup(void* handle, const char* name) {1392 return CAST_FROM_FN_PTR(void *, GetProcAddress((HMODULE)handle, name));1393 1433 } 1394 1434 … … 1753 1793 } 1754 1794 1795 buf[0] = '\0'; 1796 if (strcmp(Arguments::sun_java_launcher(), "gamma") == 0) { 1797 // Support for the gamma launcher. Check for an 1798 // JAVA_HOME environment variable 1799 // and fix up the path so it looks like 1800 // libjvm.so is installed there (append a fake suffix 1801 // hotspot/libjvm.so). 1802 char* java_home_var = ::getenv("JAVA_HOME"); 1803 if (java_home_var != NULL && java_home_var[0] != 0) { 1804 1805 strncpy(buf, java_home_var, buflen); 1806 1807 // determine if this is a legacy image or modules image 1808 // modules image doesn't have "jre" subdirectory 1809 size_t len = strlen(buf); 1810 char* jrebin_p = buf + len; 1811 jio_snprintf(jrebin_p, buflen-len, "\\jre\\bin\\"); 1812 if (0 != _access(buf, 0)) { 1813 jio_snprintf(jrebin_p, buflen-len, "\\bin\\"); 1814 } 1815 len = strlen(buf); 1816 jio_snprintf(buf + len, buflen-len, "hotspot\\jvm.dll"); 1817 } 1818 } 1819 1820 if(buf[0] == '\0') { 1755 1821 GetModuleFileName(vm_lib_handle, buf, buflen); 1822 } 1756 1823 strcpy(saved_jvm_path, buf); 1757 1824 } … … 1769 1836 st->print("@%d", args_size * sizeof(int)); 1770 1837 #endif 1838 } 1839 1840 // This method is a copy of JDK's sysGetLastErrorString 1841 // from src/windows/hpi/src/system_md.c 1842 1843 size_t os::lasterror(char *buf, size_t len) { 1844 long errval; 1845 1846 if ((errval = GetLastError()) != 0) { 1847 /* DOS error */ 1848 int n = (int)FormatMessage( 1849 FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS, 1850 NULL, 1851 errval, 1852 0, 1853 buf, 1854 (DWORD)len, 1855 NULL); 1856 if (n > 3) { 1857 /* Drop final '.', CR, LF */ 1858 if (buf[n - 1] == '\n') n--; 1859 if (buf[n - 1] == '\r') n--; 1860 if (buf[n - 1] == '.') n--; 1861 buf[n] = '\0'; 1862 } 1863 return n; 1864 } 1865 1866 if (errno != 0) { 1867 /* C runtime error that has no corresponding DOS error code */ 1868 const char *s = strerror(errno); 1869 size_t n = strlen(s); 1870 if (n >= len) n = len - 1; 1871 strncpy(buf, s, n); 1872 buf[n] = '\0'; 1873 return n; 1874 } 1875 return 0; 1771 1876 } 1772 1877 … … 1983 2088 int number; 1984 2089 }; 2090 2091 // All Visual C++ exceptions thrown from code generated by the Microsoft Visual 2092 // C++ compiler contain this error code. Because this is a compiler-generated 2093 // error, the code is not listed in the Win32 API header files. 2094 // The code is actually a cryptic mnemonic device, with the initial "E" 2095 // standing for "exception" and the final 3 bytes (0x6D7363) representing the 2096 // ASCII values of "msc". 2097 2098 #define EXCEPTION_UNCAUGHT_CXX_EXCEPTION 0xE06D7363 2099 1985 2100 1986 2101 struct siglabel exceptlabels[] = { … … 2008 2123 def_excpt(EXCEPTION_GUARD_PAGE), 2009 2124 def_excpt(EXCEPTION_INVALID_HANDLE), 2125 def_excpt(EXCEPTION_UNCAUGHT_CXX_EXCEPTION), 2010 2126 NULL, 0 2011 2127 }; … … 2240 2356 } 2241 2357 } 2242 2243 2358 2244 2359 if (t != NULL && t->is_Java_thread()) { … … 2445 2560 } 2446 2561 #ifndef _WIN64 2447 if ((thread->thread_state() == _thread_in_Java) || 2448 (thread->thread_state() == _thread_in_native) ) 2562 if (((thread->thread_state() == _thread_in_Java) || 2563 (thread->thread_state() == _thread_in_native)) && 2564 exception_code != EXCEPTION_UNCAUGHT_CXX_EXCEPTION) 2449 2565 { 2450 2566 LONG result=Handle_FLT_Exception(exceptionInfo); … … 2470 2586 case EXCEPTION_INT_OVERFLOW: 2471 2587 case EXCEPTION_INT_DIVIDE_BY_ZERO: 2588 case EXCEPTION_UNCAUGHT_CXX_EXCEPTION: 2472 2589 { report_error(t, exception_code, pc, exceptionInfo->ExceptionRecord, 2473 2590 exceptionInfo->ContextRecord); … … 2998 3115 // >1: Thread is still suspended. 2999 3116 assert(ret != SYS_THREAD_ERROR, "StartThread failed"); // should propagate back 3000 }3001 3002 size_t os::read(int fd, void *buf, unsigned int nBytes) {3003 return ::read(fd, buf, nBytes);3004 3117 } 3005 3118 … … 3442 3555 } 3443 3556 3444 3445 3557 // this is called _after_ the global arguments have been parsed 3446 3558 jint os::init_2(void) { … … 3515 3627 } 3516 3628 3517 // Initialize HPI.3518 jint hpi_result = hpi::initialize();3519 if (hpi_result != JNI_OK) { return hpi_result; }3520 3521 3629 // If stack_commit_size is 0, windows will reserve the default size, 3522 3630 // but only commit a small portion of it. … … 3527 3635 // If stack_commit_size == 0, we want this too 3528 3636 actual_reserve_size = default_reserve_size; 3637 } 3638 3639 // Check minimum allowable stack size for thread creation and to initialize 3640 // the java system classes, including StackOverflowError - depends on page 3641 // size. Add a page for compiler2 recursion in main thread. 3642 // Add in 2*BytesPerWord times page size to account for VM stack during 3643 // class initialization depending on 32 or 64 bit VM. 3644 size_t min_stack_allowed = 3645 (size_t)(StackYellowPages+StackRedPages+StackShadowPages+ 3646 2*BytesPerWord COMPILER2_PRESENT(+1)) * os::vm_page_size(); 3647 if (actual_reserve_size < min_stack_allowed) { 3648 tty->print_cr("\nThe stack size specified is too small, " 3649 "Specify at least %dk", 3650 min_stack_allowed / K); 3651 return JNI_ERR; 3529 3652 } 3530 3653 … … 3610 3733 return -1; 3611 3734 } 3612 hpi::native_path(strcpy(pathbuf, path));3735 os::native_path(strcpy(pathbuf, path)); 3613 3736 int ret = ::stat(pathbuf, sbuf); 3614 3737 if (sbuf != NULL && UseUTCFileTimestamp) { … … 3754 3877 } 3755 3878 3879 // This method is a slightly reworked copy of JDK's sysOpen 3880 // from src/windows/hpi/src/sys_api_md.c 3881 3882 int os::open(const char *path, int oflag, int mode) { 3883 char pathbuf[MAX_PATH]; 3884 3885 if (strlen(path) > MAX_PATH - 1) { 3886 errno = ENAMETOOLONG; 3887 return -1; 3888 } 3889 os::native_path(strcpy(pathbuf, path)); 3890 return ::open(pathbuf, oflag | O_BINARY | O_NOINHERIT, mode); 3891 } 3892 3756 3893 // Is a (classpath) directory empty? 3757 3894 bool os::dir_is_empty(const char* path) { … … 3784 3921 } 3785 3922 3923 3924 jlong os::lseek(int fd, jlong offset, int whence) { 3925 return (jlong) ::_lseeki64(fd, offset, whence); 3926 } 3927 3928 // This method is a slightly reworked copy of JDK's sysNativePath 3929 // from src/windows/hpi/src/path_md.c 3930 3931 /* Convert a pathname to native format. On win32, this involves forcing all 3932 separators to be '\\' rather than '/' (both are legal inputs, but Win95 3933 sometimes rejects '/') and removing redundant separators. The input path is 3934 assumed to have been converted into the character encoding used by the local 3935 system. Because this might be a double-byte encoding, care is taken to 3936 treat double-byte lead characters correctly. 3937 3938 This procedure modifies the given path in place, as the result is never 3939 longer than the original. There is no error return; this operation always 3940 succeeds. */ 3941 char * os::native_path(char *path) { 3942 char *src = path, *dst = path, *end = path; 3943 char *colon = NULL; /* If a drive specifier is found, this will 3944 point to the colon following the drive 3945 letter */ 3946 3947 /* Assumption: '/', '\\', ':', and drive letters are never lead bytes */ 3948 assert(((!::IsDBCSLeadByte('/')) 3949 && (!::IsDBCSLeadByte('\\')) 3950 && (!::IsDBCSLeadByte(':'))), 3951 "Illegal lead byte"); 3952 3953 /* Check for leading separators */ 3954 #define isfilesep(c) ((c) == '/' || (c) == '\\') 3955 while (isfilesep(*src)) { 3956 src++; 3957 } 3958 3959 if (::isalpha(*src) && !::IsDBCSLeadByte(*src) && src[1] == ':') { 3960 /* Remove leading separators if followed by drive specifier. This 3961 hack is necessary to support file URLs containing drive 3962 specifiers (e.g., "file://c:/path"). As a side effect, 3963 "/c:/path" can be used as an alternative to "c:/path". */ 3964 *dst++ = *src++; 3965 colon = dst; 3966 *dst++ = ':'; 3967 src++; 3968 } else { 3969 src = path; 3970 if (isfilesep(src[0]) && isfilesep(src[1])) { 3971 /* UNC pathname: Retain first separator; leave src pointed at 3972 second separator so that further separators will be collapsed 3973 into the second separator. The result will be a pathname 3974 beginning with "\\\\" followed (most likely) by a host name. */ 3975 src = dst = path + 1; 3976 path[0] = '\\'; /* Force first separator to '\\' */ 3977 } 3978 } 3979 3980 end = dst; 3981 3982 /* Remove redundant separators from remainder of path, forcing all 3983 separators to be '\\' rather than '/'. Also, single byte space 3984 characters are removed from the end of the path because those 3985 are not legal ending characters on this operating system. 3986 */ 3987 while (*src != '\0') { 3988 if (isfilesep(*src)) { 3989 *dst++ = '\\'; src++; 3990 while (isfilesep(*src)) src++; 3991 if (*src == '\0') { 3992 /* Check for trailing separator */ 3993 end = dst; 3994 if (colon == dst - 2) break; /* "z:\\" */ 3995 if (dst == path + 1) break; /* "\\" */ 3996 if (dst == path + 2 && isfilesep(path[0])) { 3997 /* "\\\\" is not collapsed to "\\" because "\\\\" marks the 3998 beginning of a UNC pathname. Even though it is not, by 3999 itself, a valid UNC pathname, we leave it as is in order 4000 to be consistent with the path canonicalizer as well 4001 as the win32 APIs, which treat this case as an invalid 4002 UNC pathname rather than as an alias for the root 4003 directory of the current drive. */ 4004 break; 4005 } 4006 end = --dst; /* Path does not denote a root directory, so 4007 remove trailing separator */ 4008 break; 4009 } 4010 end = dst; 4011 } else { 4012 if (::IsDBCSLeadByte(*src)) { /* Copy a double-byte character */ 4013 *dst++ = *src++; 4014 if (*src) *dst++ = *src++; 4015 end = dst; 4016 } else { /* Copy a single-byte character */ 4017 char c = *src++; 4018 *dst++ = c; 4019 /* Space is not a legal ending character */ 4020 if (c != ' ') end = dst; 4021 } 4022 } 4023 } 4024 4025 *end = '\0'; 4026 4027 /* For "z:", add "." to work around a bug in the C runtime library */ 4028 if (colon == dst - 1) { 4029 path[2] = '.'; 4030 path[3] = '\0'; 4031 } 4032 4033 #ifdef DEBUG 4034 jio_fprintf(stderr, "sysNativePath: %s\n", path); 4035 #endif DEBUG 4036 return path; 4037 } 4038 4039 // This code is a copy of JDK's sysSetLength 4040 // from src/windows/hpi/src/sys_api_md.c 4041 4042 int os::ftruncate(int fd, jlong length) { 4043 HANDLE h = (HANDLE)::_get_osfhandle(fd); 4044 long high = (long)(length >> 32); 4045 DWORD ret; 4046 4047 if (h == (HANDLE)(-1)) { 4048 return -1; 4049 } 4050 4051 ret = ::SetFilePointer(h, (long)(length), &high, FILE_BEGIN); 4052 if ((ret == 0xFFFFFFFF) && (::GetLastError() != NO_ERROR)) { 4053 return -1; 4054 } 4055 4056 if (::SetEndOfFile(h) == FALSE) { 4057 return -1; 4058 } 4059 4060 return 0; 4061 } 4062 4063 4064 // This code is a copy of JDK's sysSync 4065 // from src/windows/hpi/src/sys_api_md.c 4066 // except for the legacy workaround for a bug in Win 98 4067 4068 int os::fsync(int fd) { 4069 HANDLE handle = (HANDLE)::_get_osfhandle(fd); 4070 4071 if ( (!::FlushFileBuffers(handle)) && 4072 (GetLastError() != ERROR_ACCESS_DENIED) ) { 4073 /* from winerror.h */ 4074 return -1; 4075 } 4076 return 0; 4077 } 4078 4079 static int nonSeekAvailable(int, long *); 4080 static int stdinAvailable(int, long *); 4081 4082 #define S_ISCHR(mode) (((mode) & _S_IFCHR) == _S_IFCHR) 4083 #define S_ISFIFO(mode) (((mode) & _S_IFIFO) == _S_IFIFO) 4084 4085 // This code is a copy of JDK's sysAvailable 4086 // from src/windows/hpi/src/sys_api_md.c 4087 4088 int os::available(int fd, jlong *bytes) { 4089 jlong cur, end; 4090 struct _stati64 stbuf64; 4091 4092 if (::_fstati64(fd, &stbuf64) >= 0) { 4093 int mode = stbuf64.st_mode; 4094 if (S_ISCHR(mode) || S_ISFIFO(mode)) { 4095 int ret; 4096 long lpbytes; 4097 if (fd == 0) { 4098 ret = stdinAvailable(fd, &lpbytes); 4099 } else { 4100 ret = nonSeekAvailable(fd, &lpbytes); 4101 } 4102 (*bytes) = (jlong)(lpbytes); 4103 return ret; 4104 } 4105 if ((cur = ::_lseeki64(fd, 0L, SEEK_CUR)) == -1) { 4106 return FALSE; 4107 } else if ((end = ::_lseeki64(fd, 0L, SEEK_END)) == -1) { 4108 return FALSE; 4109 } else if (::_lseeki64(fd, cur, SEEK_SET) == -1) { 4110 return FALSE; 4111 } 4112 *bytes = end - cur; 4113 return TRUE; 4114 } else { 4115 return FALSE; 4116 } 4117 } 4118 4119 // This code is a copy of JDK's nonSeekAvailable 4120 // from src/windows/hpi/src/sys_api_md.c 4121 4122 static int nonSeekAvailable(int fd, long *pbytes) { 4123 /* This is used for available on non-seekable devices 4124 * (like both named and anonymous pipes, such as pipes 4125 * connected to an exec'd process). 4126 * Standard Input is a special case. 4127 * 4128 */ 4129 HANDLE han; 4130 4131 if ((han = (HANDLE) ::_get_osfhandle(fd)) == (HANDLE)(-1)) { 4132 return FALSE; 4133 } 4134 4135 if (! ::PeekNamedPipe(han, NULL, 0, NULL, (LPDWORD)pbytes, NULL)) { 4136 /* PeekNamedPipe fails when at EOF. In that case we 4137 * simply make *pbytes = 0 which is consistent with the 4138 * behavior we get on Solaris when an fd is at EOF. 4139 * The only alternative is to raise an Exception, 4140 * which isn't really warranted. 4141 */ 4142 if (::GetLastError() != ERROR_BROKEN_PIPE) { 4143 return FALSE; 4144 } 4145 *pbytes = 0; 4146 } 4147 return TRUE; 4148 } 4149 4150 #define MAX_INPUT_EVENTS 2000 4151 4152 // This code is a copy of JDK's stdinAvailable 4153 // from src/windows/hpi/src/sys_api_md.c 4154 4155 static int stdinAvailable(int fd, long *pbytes) { 4156 HANDLE han; 4157 DWORD numEventsRead = 0; /* Number of events read from buffer */ 4158 DWORD numEvents = 0; /* Number of events in buffer */ 4159 DWORD i = 0; /* Loop index */ 4160 DWORD curLength = 0; /* Position marker */ 4161 DWORD actualLength = 0; /* Number of bytes readable */ 4162 BOOL error = FALSE; /* Error holder */ 4163 INPUT_RECORD *lpBuffer; /* Pointer to records of input events */ 4164 4165 if ((han = ::GetStdHandle(STD_INPUT_HANDLE)) == INVALID_HANDLE_VALUE) { 4166 return FALSE; 4167 } 4168 4169 /* Construct an array of input records in the console buffer */ 4170 error = ::GetNumberOfConsoleInputEvents(han, &numEvents); 4171 if (error == 0) { 4172 return nonSeekAvailable(fd, pbytes); 4173 } 4174 4175 /* lpBuffer must fit into 64K or else PeekConsoleInput fails */ 4176 if (numEvents > MAX_INPUT_EVENTS) { 4177 numEvents = MAX_INPUT_EVENTS; 4178 } 4179 4180 lpBuffer = (INPUT_RECORD *)os::malloc(numEvents * sizeof(INPUT_RECORD)); 4181 if (lpBuffer == NULL) { 4182 return FALSE; 4183 } 4184 4185 error = ::PeekConsoleInput(han, lpBuffer, numEvents, &numEventsRead); 4186 if (error == 0) { 4187 os::free(lpBuffer); 4188 return FALSE; 4189 } 4190 4191 /* Examine input records for the number of bytes available */ 4192 for(i=0; i<numEvents; i++) { 4193 if (lpBuffer[i].EventType == KEY_EVENT) { 4194 4195 KEY_EVENT_RECORD *keyRecord = (KEY_EVENT_RECORD *) 4196 &(lpBuffer[i].Event); 4197 if (keyRecord->bKeyDown == TRUE) { 4198 CHAR *keyPressed = (CHAR *) &(keyRecord->uChar); 4199 curLength++; 4200 if (*keyPressed == '\r') { 4201 actualLength = curLength; 4202 } 4203 } 4204 } 4205 } 4206 4207 if(lpBuffer != NULL) { 4208 os::free(lpBuffer); 4209 } 4210 4211 *pbytes = (long) actualLength; 4212 return TRUE; 4213 } 3786 4214 3787 4215 // Map a block of memory. … … 3950 4378 if (fd != -1) { 3951 4379 struct stat buf; 3952 close(fd);4380 ::close(fd); 3953 4381 while (::stat(filename, &buf) == 0) { 3954 4382 Sleep(100); … … 4133 4561 return; 4134 4562 } 4135 else if (time == 0 ) {4563 else if (time == 0 && !isAbsolute) { 4136 4564 time = INFINITE; 4137 4565 } … … 4314 4742 bool os::is_headless_jre() { return false; } 4315 4743 4744 // OS_SocketInterface 4745 // Not used on Windows 4746 4747 // OS_SocketInterface 4748 typedef struct hostent * (PASCAL FAR *ws2_ifn_ptr_t)(...); 4749 ws2_ifn_ptr_t *get_host_by_name_fn = NULL; 4750 4751 typedef CRITICAL_SECTION mutex_t; 4752 #define mutexInit(m) InitializeCriticalSection(m) 4753 #define mutexDestroy(m) DeleteCriticalSection(m) 4754 #define mutexLock(m) EnterCriticalSection(m) 4755 #define mutexUnlock(m) LeaveCriticalSection(m) 4756 4757 static bool sockfnptrs_initialized = FALSE; 4758 static mutex_t sockFnTableMutex; 4759 4760 /* is Winsock2 loaded? better to be explicit than to rely on sockfnptrs */ 4761 static bool winsock2Available = FALSE; 4762 4763 4764 static void initSockFnTable() { 4765 int (PASCAL FAR* WSAStartupPtr)(WORD, LPWSADATA); 4766 WSADATA wsadata; 4767 4768 ::mutexInit(&sockFnTableMutex); 4769 ::mutexLock(&sockFnTableMutex); 4770 4771 if (sockfnptrs_initialized == FALSE) { 4772 HMODULE hWinsock; 4773 4774 /* try to load Winsock2, and if that fails, load Winsock */ 4775 hWinsock = ::LoadLibrary("ws2_32.dll"); 4776 4777 if (hWinsock == NULL) { 4778 jio_fprintf(stderr, "Could not load Winsock 2 (error: %d)\n", 4779 ::GetLastError()); 4780 return; 4781 } 4782 4783 /* If we loaded a DLL, then we might as well initialize it. */ 4784 WSAStartupPtr = (int (PASCAL FAR *)(WORD, LPWSADATA)) 4785 ::GetProcAddress(hWinsock, "WSAStartup"); 4786 4787 if (WSAStartupPtr(MAKEWORD(1,1), &wsadata) != 0) { 4788 jio_fprintf(stderr, "Could not initialize Winsock\n"); 4789 } 4790 4791 get_host_by_name_fn 4792 = (ws2_ifn_ptr_t*) GetProcAddress(hWinsock, "gethostbyname"); 4793 } 4794 4795 assert(get_host_by_name_fn != NULL, 4796 "gethostbyname function not found"); 4797 sockfnptrs_initialized = TRUE; 4798 ::mutexUnlock(&sockFnTableMutex); 4799 } 4800 4801 struct hostent* os::get_host_by_name(char* name) { 4802 if (!sockfnptrs_initialized) { 4803 initSockFnTable(); 4804 } 4805 4806 assert(sockfnptrs_initialized == TRUE && get_host_by_name_fn != NULL, 4807 "sockfnptrs is not initialized or pointer to gethostbyname function is NULL"); 4808 return (*get_host_by_name_fn)(name); 4809 } 4810 4811 4812 int os::socket_close(int fd) { 4813 ShouldNotReachHere(); 4814 return 0; 4815 } 4816 4817 int os::socket_available(int fd, jint *pbytes) { 4818 ShouldNotReachHere(); 4819 return 0; 4820 } 4821 4822 int os::socket(int domain, int type, int protocol) { 4823 ShouldNotReachHere(); 4824 return 0; 4825 } 4826 4827 int os::listen(int fd, int count) { 4828 ShouldNotReachHere(); 4829 return 0; 4830 } 4831 4832 int os::connect(int fd, struct sockaddr *him, int len) { 4833 ShouldNotReachHere(); 4834 return 0; 4835 } 4836 4837 int os::accept(int fd, struct sockaddr *him, int *len) { 4838 ShouldNotReachHere(); 4839 return 0; 4840 } 4841 4842 int os::sendto(int fd, char *buf, int len, int flags, 4843 struct sockaddr *to, int tolen) { 4844 ShouldNotReachHere(); 4845 return 0; 4846 } 4847 4848 int os::recvfrom(int fd, char *buf, int nBytes, int flags, 4849 sockaddr *from, int *fromlen) { 4850 ShouldNotReachHere(); 4851 return 0; 4852 } 4853 4854 int os::recv(int fd, char *buf, int nBytes, int flags) { 4855 ShouldNotReachHere(); 4856 return 0; 4857 } 4858 4859 int os::send(int fd, char *buf, int nBytes, int flags) { 4860 ShouldNotReachHere(); 4861 return 0; 4862 } 4863 4864 int os::raw_send(int fd, char *buf, int nBytes, int flags) { 4865 ShouldNotReachHere(); 4866 return 0; 4867 } 4868 4869 int os::timeout(int fd, long timeout) { 4870 ShouldNotReachHere(); 4871 return 0; 4872 } 4873 4874 int os::get_host_name(char* name, int namelen) { 4875 ShouldNotReachHere(); 4876 return 0; 4877 } 4878 4879 int os::socket_shutdown(int fd, int howto) { 4880 ShouldNotReachHere(); 4881 return 0; 4882 } 4883 4884 int os::bind(int fd, struct sockaddr *him, int len) { 4885 ShouldNotReachHere(); 4886 return 0; 4887 } 4888 4889 int os::get_sock_name(int fd, struct sockaddr *him, int *len) { 4890 ShouldNotReachHere(); 4891 return 0; 4892 } 4893 4894 int os::get_sock_opt(int fd, int level, int optname, 4895 char *optval, int* optlen) { 4896 ShouldNotReachHere(); 4897 return 0; 4898 } 4899 4900 int os::set_sock_opt(int fd, int level, int optname, 4901 const char *optval, int optlen) { 4902 ShouldNotReachHere(); 4903 return 0; 4904 } -
trunk/openjdk/hotspot/src/os/windows/vm/os_windows.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1997, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 22 22 * 23 23 */ 24 25 #ifndef OS_WINDOWS_VM_OS_WINDOWS_HPP 26 #define OS_WINDOWS_VM_OS_WINDOWS_HPP 24 27 25 28 // Win32_OS defines the interface to windows operating systems … … 125 128 126 129 } ; 130 131 #endif // OS_WINDOWS_VM_OS_WINDOWS_HPP -
trunk/openjdk/hotspot/src/os/windows/vm/os_windows.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 1997, 20 08, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_WINDOWS_VM_OS_WINDOWS_INLINE_HPP 26 #define OS_WINDOWS_VM_OS_WINDOWS_INLINE_HPP 27 28 #include "runtime/atomic.hpp" 29 #include "runtime/os.hpp" 30 #ifdef TARGET_OS_ARCH_windows_x86 31 # include "atomic_windows_x86.inline.hpp" 32 # include "orderAccess_windows_x86.inline.hpp" 33 #endif 34 25 35 inline const char* os::file_separator() { return "\\"; } 26 36 inline const char* os::line_separator() { return "\r\n"; } 27 37 inline const char* os::path_separator() { return ";"; } 38 inline const char* os::dll_file_extension() { return ".dll"; } 28 39 29 40 #ifdef __EMX__ … … 35 46 #endif 36 47 48 inline const int os::default_file_open_flags() { return O_BINARY | O_NOINHERIT;} 49 37 50 // File names are case-insensitive on windows only 38 51 inline int os::file_name_strcmp(const char* s, const char* t) { 39 52 return _stricmp(s, t); 53 } 54 55 inline void os::dll_unload(void *lib) { 56 ::FreeLibrary((HMODULE)lib); 57 } 58 59 inline void* os::dll_lookup(void *lib, const char *name) { 60 return (void*)::GetProcAddress((HMODULE)lib, name); 40 61 } 41 62 … … 78 99 inline bool os::numa_has_static_binding() { return true; } 79 100 inline bool os::numa_has_group_homing() { return false; } 101 102 inline size_t os::read(int fd, void *buf, unsigned int nBytes) { 103 return ::read(fd, buf, nBytes); 104 } 105 106 inline size_t os::restartable_read(int fd, void *buf, unsigned int nBytes) { 107 return ::read(fd, buf, nBytes); 108 } 109 110 inline size_t os::write(int fd, const void *buf, unsigned int nBytes) { 111 return ::write(fd, buf, nBytes); 112 } 113 114 inline int os::close(int fd) { 115 return ::close(fd); 116 } 117 #endif // OS_WINDOWS_VM_OS_WINDOWS_INLINE_HPP -
trunk/openjdk/hotspot/src/os/windows/vm/perfMemory_windows.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2001, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 # include "incls/_precompiled.incl" 26 # include "incls/_perfMemory_windows.cpp.incl" 25 #include "precompiled.hpp" 26 #include "classfile/vmSymbols.hpp" 27 #include "memory/allocation.inline.hpp" 28 #include "memory/resourceArea.hpp" 29 #include "oops/oop.inline.hpp" 30 #include "os_windows.inline.hpp" 31 #include "runtime/handles.inline.hpp" 32 #include "runtime/perfMemory.hpp" 33 #include "utilities/exceptions.hpp" 27 34 28 35 #include <windows.h> … … 894 901 (sizeof(ACCESS_ALLOWED_ACE) - sizeof(DWORD)) * ace_count; 895 902 for (int i = 0; i < ace_count; i++) { 903 assert(aces[i].pSid != 0, "pSid should not be 0"); 896 904 newACLsize += GetLengthSid(aces[i].pSid); 897 905 } … … 1090 1098 aces[0].pSid = get_user_sid(GetCurrentProcess()); 1091 1099 aces[0].mask = umask; 1100 1101 if (aces[0].pSid == 0) 1102 return NULL; 1092 1103 1093 1104 // get the well known SID for BUILTIN\Administrators -
trunk/openjdk/hotspot/src/os/windows/vm/stubRoutines_windows.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #include "incls/_precompiled.incl" 26 #include "incls/_stubRoutines_windows.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/os.hpp" 27 #include "runtime/stubRoutines.hpp" 28 -
trunk/openjdk/hotspot/src/os/windows/vm/threadCritical_windows.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2001, 20 03, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 # include "incls/_precompiled.incl" 26 # include "incls/_threadCritical_windows.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/threadCritical.hpp" 27 #include "thread_windows.inline.hpp" 27 28 28 29 // OS-includes here -
trunk/openjdk/hotspot/src/os/windows/vm/thread_windows.inline.hpp
r278 r309 1 1 /* 2 * Copyright (c) 2002, 20 03, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 #ifndef OS_WINDOWS_VM_THREAD_WINDOWS_INLINE_HPP 26 #define OS_WINDOWS_VM_THREAD_WINDOWS_INLINE_HPP 27 28 #include "runtime/atomic.hpp" 29 #include "runtime/prefetch.hpp" 30 #include "runtime/thread.hpp" 31 #include "runtime/threadLocalStorage.hpp" 32 #ifdef TARGET_OS_ARCH_windows_x86 33 # include "atomic_windows_x86.inline.hpp" 34 # include "orderAccess_windows_x86.inline.hpp" 35 # include "prefetch_windows_x86.inline.hpp" 36 #endif 37 25 38 // Contains inlined functions for class Thread and ThreadLocalStorage 26 39 27 40 inline void ThreadLocalStorage::pd_invalidate_all() { return; } 41 42 #endif // OS_WINDOWS_VM_THREAD_WINDOWS_INLINE_HPP -
trunk/openjdk/hotspot/src/os/windows/vm/vmError_windows.cpp
r278 r309 1 1 /* 2 * Copyright (c) 2003, 20 07, Oracle and/or its affiliates. All rights reserved.2 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 3 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 4 * … … 23 23 */ 24 24 25 # include "incls/_precompiled.incl" 26 # include "incls/_vmError_windows.cpp.incl" 25 #include "precompiled.hpp" 26 #include "runtime/arguments.hpp" 27 #include "runtime/os.hpp" 28 #include "runtime/thread.hpp" 29 #include "utilities/vmError.hpp" 27 30 28 31
Note:
See TracChangeset
for help on using the changeset viewer.