src/os/windows/vm/os_windows.hpp
Print this page
@@ -34,10 +34,11 @@
static const char* line_separator() { return "\r\n"; }
static const char* path_separator() { return ";"; }
class win32 {
friend class os;
+ friend unsigned __stdcall java_start(class Thread*);
protected:
static int _vm_page_size;
static int _vm_allocation_granularity;
static int _processor_type;
@@ -45,10 +46,11 @@
static julong _physical_memory;
static size_t _default_stack_size;
static bool _is_nt;
static bool _is_windows_2003;
static bool _is_windows_server;
+ static bool _has_exit_bug;
static bool _has_performance_count;
static void print_windows_version(outputStream* st);
public:
@@ -68,10 +70,14 @@
// load dll from Windows system directory or Windows directory
static HINSTANCE load_Windows_dll(const char* name, char *ebuf, int ebuflen);
private:
+ enum Ept { EPT_THREAD, EPT_PROCESS, EPT_PROCESS_DIE };
+ // Wrapper around _endthreadex(), exit() and _exit()
+ static int exit_process_or_thread(Ept what, int exit_code);
+
static void initialize_performance_counter();
public:
// Generic interface:
@@ -86,10 +92,13 @@
static bool is_windows_server() { return _is_windows_server; }
// Tells whether the platform is Windows 2003
static bool is_windows_2003() { return _is_windows_2003; }
+ // Tells whether there can be the race bug during process exit on this platform
+ static bool has_exit_bug() { return _has_exit_bug; }
+
// Returns the byte size of a virtual memory page
static int vm_page_size() { return _vm_page_size; }
// Returns the size in bytes of memory blocks which can be allocated.
static int vm_allocation_granularity() { return _vm_allocation_granularity; }