mirror of
https://github.com/vim/vim.git
synced 2025-10-08 06:04:08 -04:00
patch 7.4.1033
Problem: Memory use on MS-Windows is very conservative. Solution: Use the global memory status to estimate amount of memory. (Mike Williams)
This commit is contained in:
@@ -5858,6 +5858,66 @@ mch_breakcheck(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* physical RAM to leave for the OS */
|
||||||
|
#define WINNT_RESERVE_BYTES (256*1024*1024)
|
||||||
|
#define WIN95_RESERVE_BYTES (8*1024*1024)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* How much main memory in KiB that can be used by VIM.
|
||||||
|
*/
|
||||||
|
/*ARGSUSED*/
|
||||||
|
long_u
|
||||||
|
mch_total_mem(int special)
|
||||||
|
{
|
||||||
|
PlatformId();
|
||||||
|
#if (defined(_MSC_VER) && (WINVER > 0x0400)) || defined(MEMORYSTATUSEX)
|
||||||
|
if (g_PlatformId == VER_PLATFORM_WIN32_NT)
|
||||||
|
{
|
||||||
|
MEMORYSTATUSEX ms;
|
||||||
|
|
||||||
|
/* Need to use GlobalMemoryStatusEx() when there is more memory than
|
||||||
|
* what fits in 32 bits. But it's not always available. */
|
||||||
|
ms.dwLength = sizeof(MEMORYSTATUSEX);
|
||||||
|
GlobalMemoryStatusEx(&ms);
|
||||||
|
if (ms.ullAvailVirtual < ms.ullTotalPhys)
|
||||||
|
{
|
||||||
|
/* Process address space fits in physical RAM, use all of it. */
|
||||||
|
return (long_u)(ms.ullAvailVirtual / 1024);
|
||||||
|
}
|
||||||
|
if (ms.ullTotalPhys <= WINNT_RESERVE_BYTES)
|
||||||
|
{
|
||||||
|
/* Catch old NT box or perverse hardware setup. */
|
||||||
|
return (long_u)((ms.ullTotalPhys / 2) / 1024);
|
||||||
|
}
|
||||||
|
/* Use physical RAM less reserve for OS + data. */
|
||||||
|
return (long_u)((ms.ullTotalPhys - WINNT_RESERVE_BYTES) / 1024);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
/* Pre-XP or 95 OS handling. */
|
||||||
|
MEMORYSTATUS ms;
|
||||||
|
long_u os_reserve_bytes;
|
||||||
|
|
||||||
|
ms.dwLength = sizeof(MEMORYSTATUS);
|
||||||
|
GlobalMemoryStatus(&ms);
|
||||||
|
if (ms.dwAvailVirtual < ms.dwTotalPhys)
|
||||||
|
{
|
||||||
|
/* Process address space fits in physical RAM, use all of it. */
|
||||||
|
return (long_u)(ms.dwAvailVirtual / 1024);
|
||||||
|
}
|
||||||
|
os_reserve_bytes = (g_PlatformId == VER_PLATFORM_WIN32_NT)
|
||||||
|
? WINNT_RESERVE_BYTES
|
||||||
|
: WIN95_RESERVE_BYTES;
|
||||||
|
if (ms.dwTotalPhys <= os_reserve_bytes)
|
||||||
|
{
|
||||||
|
/* Catch old boxes or perverse hardware setup. */
|
||||||
|
return (long_u)((ms.dwTotalPhys / 2) / 1024);
|
||||||
|
}
|
||||||
|
/* Use physical RAM less reserve for OS + data. */
|
||||||
|
return (long_u)((ms.dwTotalPhys - os_reserve_bytes) / 1024);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef FEAT_MBYTE
|
#ifdef FEAT_MBYTE
|
||||||
/*
|
/*
|
||||||
|
@@ -78,6 +78,8 @@
|
|||||||
# define BREAKCHECK_SKIP 1 /* call mch_breakcheck() each time, it's fast */
|
# define BREAKCHECK_SKIP 1 /* call mch_breakcheck() each time, it's fast */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define HAVE_TOTAL_MEM
|
||||||
|
|
||||||
#define HAVE_PUTENV /* at least Bcc 5.2 and MSC have it */
|
#define HAVE_PUTENV /* at least Bcc 5.2 and MSC have it */
|
||||||
|
|
||||||
#ifdef FEAT_GUI_W32
|
#ifdef FEAT_GUI_W32
|
||||||
|
@@ -43,6 +43,7 @@ void mch_write __ARGS((char_u *s, int len));
|
|||||||
void mch_delay __ARGS((long msec, int ignoreinput));
|
void mch_delay __ARGS((long msec, int ignoreinput));
|
||||||
int mch_remove __ARGS((char_u *name));
|
int mch_remove __ARGS((char_u *name));
|
||||||
void mch_breakcheck __ARGS((void));
|
void mch_breakcheck __ARGS((void));
|
||||||
|
long_u mch_total_mem __ARGS((int special));
|
||||||
int mch_wrename __ARGS((WCHAR *wold, WCHAR *wnew));
|
int mch_wrename __ARGS((WCHAR *wold, WCHAR *wnew));
|
||||||
int mch_rename __ARGS((const char *pszOldFile, const char *pszNewFile));
|
int mch_rename __ARGS((const char *pszOldFile, const char *pszNewFile));
|
||||||
char *default_shell __ARGS((void));
|
char *default_shell __ARGS((void));
|
||||||
|
@@ -741,6 +741,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1033,
|
||||||
/**/
|
/**/
|
||||||
1032,
|
1032,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user