mirror of
https://github.com/sqlite/sqlite.git
synced 2025-10-27 08:52:26 +03:00
Separate P4 timing asm code out of the SQLITE_DEBUG macro so that SQLITE_DEBUG
can be used on non-x86 machines and with compilers other than GCC. Ticket #838. (CVS 1876) FossilOrigin-Name: add266ccc3146fa56572d109e84c8a79dc3df2ca
This commit is contained in:
14
manifest
14
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Separate\sthe\sifdefs\sfor\sINTPTR_TYPE\sand\sUINTPTR_TYPE\sin\ssqliteInt.h.\s(CVS\s1875)
|
C Separate\sP4\stiming\sasm\scode\sout\sof\sthe\sSQLITE_DEBUG\smacro\sso\sthat\sSQLITE_DEBUG\ncan\sbe\sused\son\snon-x86\smachines\sand\swith\scompilers\sother\sthan\sGCC.\nTicket\s#838.\s(CVS\s1876)
|
||||||
D 2004-08-04T14:29:23
|
D 2004-08-04T14:44:34
|
||||||
F Makefile.in 4a5e570a9e2d35b09c31b3cf01b78cea764ade4b
|
F Makefile.in 4a5e570a9e2d35b09c31b3cf01b78cea764ade4b
|
||||||
F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457
|
F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457
|
||||||
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
|
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
|
||||||
@@ -42,12 +42,12 @@ F src/legacy.c ad23746f15f67e34577621b1875f639c94839e1f
|
|||||||
F src/main.c 41da595846e299b757cc413d18de804f97f68748
|
F src/main.c 41da595846e299b757cc413d18de804f97f68748
|
||||||
F src/md5.c 7ae1c39044b95de2f62e066f47bb1deb880a1070
|
F src/md5.c 7ae1c39044b95de2f62e066f47bb1deb880a1070
|
||||||
F src/os.h d1780e0db95cad01f213d48da22ab490eb4fd345
|
F src/os.h d1780e0db95cad01f213d48da22ab490eb4fd345
|
||||||
F src/os_common.h fe9604754116bd2f2702d58f82d2d8b89998cb21
|
F src/os_common.h cd7eb025fdab7dc91e0e97bf6310f1648205857f
|
||||||
F src/os_mac.c 3d31e26be1411acfb7961033098631b4f3486fdf
|
F src/os_mac.c 3d31e26be1411acfb7961033098631b4f3486fdf
|
||||||
F src/os_mac.h 51d2445f47e182ed32d3bd6937f81070c6fd9bd4
|
F src/os_mac.h 51d2445f47e182ed32d3bd6937f81070c6fd9bd4
|
||||||
F src/os_test.c 6bf10100de2ca199a91fe7ac6474561c8a7166ae
|
F src/os_test.c 6bf10100de2ca199a91fe7ac6474561c8a7166ae
|
||||||
F src/os_test.h 6a26a4978492e4bbdbf385554958418ff02db162
|
F src/os_test.h 6a26a4978492e4bbdbf385554958418ff02db162
|
||||||
F src/os_unix.c 02a08065f90ca2737514cdc19d60eb3c4b98fa6b
|
F src/os_unix.c d084e3443211e1556f1a33fe48580e135facbcf7
|
||||||
F src/os_unix.h f3097815e041e82e24d92505e1ff61ba24172d13
|
F src/os_unix.h f3097815e041e82e24d92505e1ff61ba24172d13
|
||||||
F src/os_win.c 54181eb73cb4783c4241feca9eaa490768b39008
|
F src/os_win.c 54181eb73cb4783c4241feca9eaa490768b39008
|
||||||
F src/os_win.h babd4e912967c6b09088cfe38a45e8005a07ba44
|
F src/os_win.h babd4e912967c6b09088cfe38a45e8005a07ba44
|
||||||
@@ -240,7 +240,7 @@ F www/tclsqlite.tcl 06a86cba4d7fc88e2bcd633b57702d3d16abebb5
|
|||||||
F www/vdbe.tcl 59288db1ac5c0616296b26dce071c36cb611dfe9
|
F www/vdbe.tcl 59288db1ac5c0616296b26dce071c36cb611dfe9
|
||||||
F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0
|
F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0
|
||||||
F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
|
F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
|
||||||
P 7ecff04a6153aa200233e6c0846a65e0213c3179
|
P 4e7953c13fd2cb32e5c97737c4b2f99b1b1edc9b
|
||||||
R bb7c51783ef3b73e24fdafb73590b839
|
R 32ad53e3950d031bf8dd62a53bdface5
|
||||||
U drh
|
U drh
|
||||||
Z 5df9b4b7e13f1695014f4ed2b1c6b64b
|
Z 06402d986b3876ed10b4e307c21b4abe
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
4e7953c13fd2cb32e5c97737c4b2f99b1b1edc9b
|
add266ccc3146fa56572d109e84c8a79dc3df2ca
|
||||||
@@ -18,14 +18,44 @@
|
|||||||
** general purpose header file.
|
** general purpose header file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** At least two bugs have slipped in because we changed the MEMORY_DEBUG
|
||||||
|
** macro to SQLITE_DEBUG and some older makefiles have not yet made the
|
||||||
|
** switch. The following code should catch this problem at compile-time.
|
||||||
|
*/
|
||||||
|
#ifdef MEMORY_DEBUG
|
||||||
|
# error "The MEMORY_DEBUG macro is obsolete. Use SQLITE_DEBUG instead."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
int sqlite3_os_trace = 0;
|
||||||
|
#ifdef SQLITE_DEBUG
|
||||||
|
static int last_page = 0;
|
||||||
|
#define SEEK(X) last_page=(X)
|
||||||
|
#define TRACE1(X) if( sqlite3_os_trace ) sqlite3DebugPrintf(X)
|
||||||
|
#define TRACE2(X,Y) if( sqlite3_os_trace ) sqlite3DebugPrintf(X,Y)
|
||||||
|
#define TRACE3(X,Y,Z) if( sqlite3_os_trace ) sqlite3DebugPrintf(X,Y,Z)
|
||||||
|
#define TRACE4(X,Y,Z,A) if( sqlite3_os_trace ) sqlite3DebugPrintf(X,Y,Z,A)
|
||||||
|
#define TRACE5(X,Y,Z,A,B) if( sqlite3_os_trace ) sqlite3DebugPrintf(X,Y,Z,A,B)
|
||||||
|
#define TRACE6(X,Y,Z,A,B,C) if(sqlite3_os_trace) sqlite3DebugPrintf(X,Y,Z,A,B,C)
|
||||||
|
#define TRACE7(X,Y,Z,A,B,C,D) \
|
||||||
|
if(sqlite3_os_trace) sqlite3DebugPrintf(X,Y,Z,A,B,C,D)
|
||||||
|
#else
|
||||||
|
#define SEEK(X)
|
||||||
|
#define TRACE1(X)
|
||||||
|
#define TRACE2(X,Y)
|
||||||
|
#define TRACE3(X,Y,Z)
|
||||||
|
#define TRACE4(X,Y,Z,A)
|
||||||
|
#define TRACE5(X,Y,Z,A,B)
|
||||||
|
#define TRACE6(X,Y,Z,A,B,C)
|
||||||
|
#define TRACE7(X,Y,Z,A,B,C,D)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Macros for performance tracing. Normally turned off. Only works
|
** Macros for performance tracing. Normally turned off. Only works
|
||||||
** on i486 hardware.
|
** on i486 hardware.
|
||||||
*/
|
*/
|
||||||
int sqlite3_os_trace = 0;
|
#ifdef SQLITE_PERFORMANCE_TRACE
|
||||||
#ifdef SQLITE_DEBUG
|
|
||||||
static int last_page = 0;
|
|
||||||
__inline__ unsigned long long int hwtime(void){
|
__inline__ unsigned long long int hwtime(void){
|
||||||
unsigned long long int x;
|
unsigned long long int x;
|
||||||
__asm__("rdtsc\n\t"
|
__asm__("rdtsc\n\t"
|
||||||
@@ -37,29 +67,13 @@ static unsigned long long int g_start;
|
|||||||
static unsigned int elapse;
|
static unsigned int elapse;
|
||||||
#define TIMER_START g_start=hwtime()
|
#define TIMER_START g_start=hwtime()
|
||||||
#define TIMER_END elapse=hwtime()-g_start
|
#define TIMER_END elapse=hwtime()-g_start
|
||||||
#define SEEK(X) last_page=(X)
|
#define TIMER_ELAPSED elapse
|
||||||
#define TRACE1(X) if( sqlite3_os_trace ) sqlite3DebugPrintf(X)
|
|
||||||
#define TRACE2(X,Y) if( sqlite3_os_trace ) sqlite3DebugPrintf(X,Y)
|
|
||||||
#define TRACE3(X,Y,Z) if( sqlite3_os_trace ) sqlite3DebugPrintf(X,Y,Z)
|
|
||||||
#define TRACE4(X,Y,Z,A) if( sqlite3_os_trace ) sqlite3DebugPrintf(X,Y,Z,A)
|
|
||||||
#define TRACE5(X,Y,Z,A,B) if( sqlite3_os_trace ) sqlite3DebugPrintf(X,Y,Z,A,B)
|
|
||||||
#define TRACE6(X,Y,Z,A,B,C) if(sqlite3_os_trace) sqlite3DebugPrintf(X,Y,Z,A,B,C)
|
|
||||||
#define TRACE7(X,Y,Z,A,B,C,D) \
|
|
||||||
if(sqlite3_os_trace) sqlite3DebugPrintf(X,Y,Z,A,B,C,D)
|
|
||||||
#else
|
#else
|
||||||
#define TIMER_START
|
#define TIMER_START
|
||||||
#define TIMER_END
|
#define TIMER_END
|
||||||
#define SEEK(X)
|
#define TIMER_ELAPSED 0
|
||||||
#define TRACE1(X)
|
|
||||||
#define TRACE2(X,Y)
|
|
||||||
#define TRACE3(X,Y,Z)
|
|
||||||
#define TRACE4(X,Y,Z,A)
|
|
||||||
#define TRACE5(X,Y,Z,A,B)
|
|
||||||
#define TRACE6(X,Y,Z,A,B,C)
|
|
||||||
#define TRACE7(X,Y,Z,A,B,C,D)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** If we compile with the SQLITE_TEST macro set, then the following block
|
** If we compile with the SQLITE_TEST macro set, then the following block
|
||||||
** of code will give us the ability to simulate a disk I/O error. This
|
** of code will give us the ability to simulate a disk I/O error. This
|
||||||
|
|||||||
@@ -617,7 +617,7 @@ int sqlite3OsRead(OsFile *id, void *pBuf, int amt){
|
|||||||
TIMER_START;
|
TIMER_START;
|
||||||
got = read(id->h, pBuf, amt);
|
got = read(id->h, pBuf, amt);
|
||||||
TIMER_END;
|
TIMER_END;
|
||||||
TRACE4("READ %-3d %7d %d\n", id->h, last_page, elapse);
|
TRACE4("READ %-3d %7d %d\n", id->h, last_page, TIMER_ELAPSED);
|
||||||
SEEK(0);
|
SEEK(0);
|
||||||
/* if( got<0 ) got = 0; */
|
/* if( got<0 ) got = 0; */
|
||||||
if( got==amt ){
|
if( got==amt ){
|
||||||
@@ -641,7 +641,7 @@ int sqlite3OsWrite(OsFile *id, const void *pBuf, int amt){
|
|||||||
pBuf = &((char*)pBuf)[wrote];
|
pBuf = &((char*)pBuf)[wrote];
|
||||||
}
|
}
|
||||||
TIMER_END;
|
TIMER_END;
|
||||||
TRACE4("WRITE %-3d %7d %d\n", id->h, last_page, elapse);
|
TRACE4("WRITE %-3d %7d %d\n", id->h, last_page, TIMER_ELAPSED);
|
||||||
SEEK(0);
|
SEEK(0);
|
||||||
if( amt>0 ){
|
if( amt>0 ){
|
||||||
return SQLITE_FULL;
|
return SQLITE_FULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user