Skip to content
This repository was archived by the owner on Oct 12, 2022. It is now read-only.

Commit c9c8df7

Browse files
Merge pull request #2400 from n8sh/reduce-windows.d
Reduce uses of windows.d b/c it's slow (see PR #2336)
2 parents a60cf76 + 12f64a0 commit c9c8df7

24 files changed

+75
-31
lines changed

src/core/internal/abort.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ void abort(scope string msg, scope string filename = __FILE__, size_t line = __L
1919
}
2020
else version (Windows)
2121
{
22-
import core.sys.windows.windows: GetStdHandle, STD_ERROR_HANDLE, WriteFile, INVALID_HANDLE_VALUE;
22+
import core.sys.windows.winbase : GetStdHandle, STD_ERROR_HANDLE, WriteFile, INVALID_HANDLE_VALUE;
2323
auto h = (() @trusted => GetStdHandle(STD_ERROR_HANDLE))();
2424
if (h == INVALID_HANDLE_VALUE)
2525
// attempt best we can to print the message

src/core/runtime.d

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,8 @@ struct Runtime
227227
import core.stdc.stdlib : free, malloc;
228228
version (Windows)
229229
{
230-
import core.sys.windows.windows;
230+
import core.sys.windows.winnls : CP_UTF8, MultiByteToWideChar;
231+
import core.sys.windows.winnt : WCHAR;
231232

232233
if (name.length == 0) return null;
233234
// Load a DLL at runtime
@@ -990,7 +991,7 @@ Throwable.TraceInfo defaultTraceHandler( void* ptr = null )
990991
{
991992
static enum FIRSTFRAME = 0;
992993
}
993-
import core.sys.windows.windows : CONTEXT;
994+
import core.sys.windows.winnt : CONTEXT;
994995
auto s = new StackTrace(FIRSTFRAME, cast(CONTEXT*)ptr);
995996
return s;
996997
}

src/core/sync/condition.d

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,12 @@ public import core.time;
2323
version (Windows)
2424
{
2525
private import core.sync.semaphore;
26-
private import core.sys.windows.windows;
26+
private import core.sys.windows.basetsd /+: HANDLE+/;
27+
private import core.sys.windows.winbase /+: CloseHandle, CreateSemaphoreA, CRITICAL_SECTION,
28+
DeleteCriticalSection, EnterCriticalSection, INFINITE, InitializeCriticalSection,
29+
LeaveCriticalSection, ReleaseSemaphore, WAIT_OBJECT_0, WaitForSingleObject+/;
30+
private import core.sys.windows.windef /+: BOOL, DWORD+/;
31+
private import core.sys.windows.winerror /+: WAIT_TIMEOUT+/;
2732
}
2833
else version (Posix)
2934
{

src/core/sync/mutex.d

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ public import core.sync.exception;
2020

2121
version (Windows)
2222
{
23-
private import core.sys.windows.windows;
23+
private import core.sys.windows.winbase /+: CRITICAL_SECTION, DeleteCriticalSection,
24+
EnterCriticalSection, InitializeCriticalSection, LeaveCriticalSection,
25+
TryEnterCriticalSection+/;
2426
}
2527
else version (Posix)
2628
{

src/core/sync/semaphore.d

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,11 @@ else version (WatchOS)
2929

3030
version (Windows)
3131
{
32-
private import core.sys.windows.windows;
32+
private import core.sys.windows.basetsd /+: HANDLE+/;
33+
private import core.sys.windows.winbase /+: CloseHandle, CreateSemaphoreA, INFINITE,
34+
ReleaseSemaphore, WAIT_OBJECT_0, WaitForSingleObject+/;
35+
private import core.sys.windows.windef /+: BOOL, DWORD+/;
36+
private import core.sys.windows.winerror /+: WAIT_TIMEOUT+/;
3337
}
3438
else version (Darwin)
3539
{

src/core/sys/windows/aclapi.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ version (Windows):
1313
version (ANSI) {} else version = Unicode;
1414
pragma(lib, "advapi32");
1515

16-
import core.sys.windows.windows, core.sys.windows.accctrl;
16+
import core.sys.windows.accctrl, core.sys.windows.basetyps, core.sys.windows.w32api, core.sys.windows.winnt;
1717

1818
extern (Windows) {
1919
VOID BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A, LPSTR, DWORD,

src/core/sys/windows/com.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ version (Windows):
44
pragma(lib,"uuid");
55

66
import core.atomic;
7-
import core.sys.windows.windows;
7+
import core.sys.windows.windef /+: HRESULT, LONG, ULONG+/;
88
//import std.string;
99

1010
public import core.sys.windows.basetyps : GUID, IID, CLSID;

src/core/sys/windows/comcat.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
module core.sys.windows.comcat;
1111
version (Windows):
1212

13-
import core.sys.windows.windows, core.sys.windows.ole2;
13+
import core.sys.windows.ole2;
1414
private import core.sys.windows.basetyps, core.sys.windows.cguid, core.sys.windows.objbase, core.sys.windows.unknwn,
1515
core.sys.windows.windef, core.sys.windows.wtypes;
1616

src/core/sys/windows/dbghelp.d

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
module core.sys.windows.dbghelp;
1313
version (Windows):
1414

15-
import core.sys.windows.windows;
15+
import core.sys.windows.winbase /+: FreeLibrary, GetProcAddress, LoadLibraryA+/;
16+
import core.sys.windows.windef;
1617

1718
public import core.sys.windows.dbghelp_types;
1819

src/core/sys/windows/dbghelp_types.d

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ version (Windows):
1414

1515
version (ANSI) {} else version = Unicode;
1616

17-
import core.sys.windows.windows;
17+
import core.sys.windows.windef;
18+
import core.sys.windows.imagehlp /+: ADDRESS_MODE+/;
1819

1920
public import core.sys.windows.winnt : TCHAR;
2021

src/core/sys/windows/dll.d

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
module core.sys.windows.dll;
1313
version (Windows):
1414

15-
import core.sys.windows.windows;
15+
import core.sys.windows.winbase;
16+
import core.sys.windows.winnt;
1617
import core.stdc.string;
1718
import core.runtime;
1819

@@ -473,12 +474,12 @@ bool dll_thread_detach( bool detach_thread = true, bool exitTls = true )
473474
/// ---
474475
mixin template SimpleDllMain()
475476
{
476-
import core.sys.windows.windows : HINSTANCE;
477+
import core.sys.windows.windef : HINSTANCE;
477478

478479
extern(Windows)
479480
bool DllMain(HINSTANCE hInstance, uint ulReason, void* reserved)
480481
{
481-
import core.sys.windows.windows;
482+
import core.sys.windows.winnt;
482483
import core.sys.windows.dll :
483484
dll_process_attach, dll_process_detach,
484485
dll_thread_attach, dll_thread_detach;

src/core/sys/windows/httpext.d

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ version (Windows):
1919
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2020
*/
2121

22-
private import core.sys.windows.windows;
22+
private import core.sys.windows.basetsd /+: DECLARE_HANDLE, HANDLE+/;
23+
private import core.sys.windows.windef /+: BOOL, CHAR, DWORD, LPBYTE, LPDWORD+/;
24+
private import core.sys.windows.winnt /+: LPCSTR, LPSTR, LPVOID, PVOID, VOID+/;
2325

2426
enum {
2527
HSE_VERSION_MAJOR = 2,

src/core/sys/windows/oledlg.d

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ version (Windows):
1111

1212
version (ANSI) {} else version = Unicode;
1313

14-
import core.sys.windows.commdlg, core.sys.windows.dlgs, core.sys.windows.ole2, core.sys.windows.prsht, core.sys.windows.shellapi,
15-
core.sys.windows.windows;
14+
import core.sys.windows.commdlg, core.sys.windows.dlgs, core.sys.windows.ole2, core.sys.windows.prsht, core.sys.windows.shellapi;
1615
private import core.sys.windows.winbase, core.sys.windows.objidl, core.sys.windows.objfwd, core.sys.windows.winnt;
1716

1817
// FIXME: remove inherited methods from interface definitions

src/core/sys/windows/snmp.d

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
module core.sys.windows.snmp;
1111
version (Windows):
1212

13-
private import core.sys.windows.windows;
13+
private import core.sys.windows.basetsd /+: HANDLE+/;
14+
private import core.sys.windows.windef /+: BOOL, BYTE, DWORD, INT, LONG, UINT, ULONG+/;
15+
private import core.sys.windows.winnt /+: LPSTR, LPVOID, ULARGE_INTEGER, VOID+/;
1416

1517
// These are not documented on MSDN
1618
enum {

src/core/sys/windows/stacktrace.d

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ import core.runtime;
1717
import core.stdc.stdlib;
1818
import core.stdc.string;
1919
import core.sys.windows.dbghelp;
20-
import core.sys.windows.windows;
20+
import core.sys.windows.imagehlp /+: ADDRESS_MODE+/;
21+
import core.sys.windows.winbase;
22+
import core.sys.windows.windef;
2123

2224
//debug=PRINTF;
2325
debug(PRINTF) import core.stdc.stdio;

src/core/sys/windows/threadaux.d

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
module core.sys.windows.threadaux;
1313
version (Windows):
1414

15-
import core.sys.windows.windows;
15+
import core.sys.windows.basetsd/+ : HANDLE+/;
16+
import core.sys.windows.winbase/+ : CloseHandle, GetCurrentThreadId, GetCurrentProcessId,
17+
GetModuleHandleA, GetProcAddress+/;
18+
import core.sys.windows.windef/+ : BOOL, DWORD, FALSE, HRESULT+/;
1619
import core.stdc.stdlib;
1720

1821
public import core.thread;

src/core/sys/windows/wininet.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ pragma(lib, "wininet");
1515

1616
// FIXME: check types and grouping of constants
1717

18-
import core.sys.windows.windows;
18+
import core.sys.windows.winbase, core.sys.windows.windef;
1919

2020
enum {
2121
INTERNET_INVALID_PORT_NUMBER = 0,

src/core/thread.d

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ version (Posix)
6565
}
6666
else version (Windows)
6767
{
68-
alias getpid = core.sys.windows.windows.GetCurrentProcessId;
68+
alias getpid = core.sys.windows.winbase.GetCurrentProcessId;
6969
}
7070

7171

@@ -185,8 +185,15 @@ version (Windows)
185185
{
186186
import core.stdc.stdint : uintptr_t; // for _beginthreadex decl below
187187
import core.stdc.stdlib; // for malloc, atexit
188-
import core.sys.windows.windows;
189-
import core.sys.windows.threadaux; // for OpenThreadHandle
188+
import core.sys.windows.basetsd /+: HANDLE+/;
189+
import core.sys.windows.threadaux /+: getThreadStackBottom, impersonate_thread, OpenThreadHandle+/;
190+
import core.sys.windows.winbase /+: CloseHandle, CREATE_SUSPENDED, DuplicateHandle, GetCurrentThread,
191+
GetCurrentThreadId, GetCurrentProcess, GetExitCodeThread, GetSystemInfo, GetThreadContext,
192+
GetThreadPriority, INFINITE, ResumeThread, SetThreadPriority, Sleep, STILL_ACTIVE,
193+
SuspendThread, SwitchToThread, SYSTEM_INFO, THREAD_PRIORITY_IDLE, THREAD_PRIORITY_NORMAL,
194+
THREAD_PRIORITY_TIME_CRITICAL, WAIT_OBJECT_0, WaitForSingleObject+/;
195+
import core.sys.windows.windef /+: TRUE+/;
196+
import core.sys.windows.winnt /+: CONTEXT, CONTEXT_CONTROL, CONTEXT_INTEGER+/;
190197

191198
extern (Windows) alias btex_fptr = uint function(void*);
192199
extern (C) uintptr_t _beginthreadex(void*, uint, btex_fptr, void*, uint, uint*) nothrow;

src/core/time.d

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ import core.internal.string;
8585

8686
version (Windows)
8787
{
88-
import core.sys.windows.windows;
88+
import core.sys.windows.winbase /+: QueryPerformanceCounter, QueryPerformanceFrequency+/;
8989
}
9090
else version (Posix)
9191
{

src/gc/os.d

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ module gc.os;
1616

1717
version (Windows)
1818
{
19-
import core.sys.windows.windows;
19+
import core.sys.windows.winbase : GetCurrentThreadId, VirtualAlloc, VirtualFree;
20+
import core.sys.windows.winnt : MEM_COMMIT, MEM_RELEASE, MEM_RESERVE, PAGE_READWRITE;
2021

2122
alias int pthread_t;
2223

@@ -172,7 +173,7 @@ version (Windows)
172173
return false;
173174
else
174175
{
175-
import core.sys.windows.windows;
176+
import core.sys.windows.winbase : GlobalMemoryStatus, MEMORYSTATUS;
176177
MEMORYSTATUS stat;
177178
GlobalMemoryStatus(&stat);
178179
// Less than 5 % of virtual address space available

src/rt/cover.d

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ module rt.cover;
1414
private
1515
{
1616
version (Windows)
17-
import core.sys.windows.windows;
17+
{
18+
import core.sys.windows.basetsd /+: HANDLE+/;
19+
import core.sys.windows.winbase /+: LOCKFILE_EXCLUSIVE_LOCK, LockFileEx, OVERLAPPED, SetEndOfFile+/;
20+
}
1821
else version (Posix)
1922
{
2023
import core.sys.posix.fcntl;

src/rt/deh_win32.d

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ module rt.deh_win32;
1313

1414
version (Win32):
1515

16-
import core.sys.windows.windows;
16+
import core.sys.windows.basetsd /+: ULONG_PTR+/;
17+
import core.sys.windows.windef /+: BOOL, BYTE, DWORD+/;
18+
import core.sys.windows.winnt /+: PVOID+/;
1719
import rt.monitor_;
1820
//import core.stdc.stdio;
1921

src/rt/dmain2.d

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,14 @@ private
2626
version (Windows)
2727
{
2828
private import core.stdc.wchar_;
29-
private import core.sys.windows.windows;
29+
private import core.sys.windows.basetsd /+: HANDLE+/;
30+
private import core.sys.windows.shellapi /+: CommandLineToArgvW+/;
31+
private import core.sys.windows.winbase /+: FreeLibrary, GetCommandLineW, GetProcAddress,
32+
IsDebuggerPresent, LoadLibraryA, LoadLibraryW, LocalFree, WriteFile+/;
33+
private import core.sys.windows.wincon /+: CONSOLE_SCREEN_BUFFER_INFO, GetConsoleOutputCP, GetConsoleScreenBufferInfo+/;
34+
private import core.sys.windows.winnls /+: CP_UTF8, MultiByteToWideChar, WideCharToMultiByte+/;
35+
private import core.sys.windows.winnt /+: WCHAR+/;
36+
private import core.sys.windows.winuser /+: MB_ICONERROR, MessageBoxW+/;
3037

3138
pragma(lib, "shell32.lib"); // needed for CommandLineToArgvW
3239
}

src/rt/monitor_.d

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,8 @@ version (Windows)
180180
{
181181
pragma(lib, "snn.lib");
182182
}
183-
import core.sys.windows.windows;
183+
import core.sys.windows.winbase /+: CRITICAL_SECTION, DeleteCriticalSection,
184+
EnterCriticalSection, InitializeCriticalSection, LeaveCriticalSection+/;
184185

185186
alias Mutex = CRITICAL_SECTION;
186187

0 commit comments

Comments
 (0)