]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Use a fast compiler-provided memory barrier exclusively, if such a memory faster-memory-barrier
authordrh <drh@noemail.net>
Fri, 8 Feb 2019 20:55:16 +0000 (20:55 +0000)
committerdrh <drh@noemail.net>
Fri, 8 Feb 2019 20:55:16 +0000 (20:55 +0000)
barrier is available.

FossilOrigin-Name: df66fec9bc5b8c012d2fef3e97b3f7c3850a195b417806bfddc00b88e99c97d7

manifest
manifest.uuid
src/mutex_unix.c
src/mutex_w32.c
src/os_unix.c
src/os_win.c

index 53d85607bfbe2d40f4f4e96193a89b4d6c7d2099..21698c4ea639f0320003956e80f4eaa0f7dcba1d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Further\ssimplifications\sto\ssqlite3VdbeMemSetStr().
-D 2019-02-08T17:28:20.169
+C Use\sa\sfast\scompiler-provided\smemory\sbarrier\sexclusively,\sif\ssuch\sa\smemory\nbarrier\sis\savailable.
+D 2019-02-08T20:55:16.378
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in 178d8eb6840771149cee40b322d1b3be30d330198c522c903c1b66fb5a1bfca4
@@ -491,15 +491,15 @@ F src/msvc.h 4942752b6a253116baaa8de75256c51a459a5e81
 F src/mutex.c bae36f8af32c22ad80bbf0ccebec63c252b6a2b86e4d3e42672ff287ebf4a604
 F src/mutex.h 779d588e3b7756ec3ecf7d78cde1d84aba414f85
 F src/mutex_noop.c 9d4309c075ba9cc7249e19412d3d62f7f94839c4
-F src/mutex_unix.c aaf9ebc3f89df28483c52208497a99a02cc3650011422fc9d4c57e4392f7fe58
-F src/mutex_w32.c 7670d770c94bbfe8289bec9d7f1394c5a00a57c37f892aab6b6612d085255235
+F src/mutex_unix.c 38abc2b703aae750e062947b75442893b02d8e124383d0e72d309e1c0d96d5e9
+F src/mutex_w32.c 761007c4382f684ebff7be2529a4926f6f2d30a178ef188d6b39ab35be5fefb4
 F src/notify.c 9711a7575036f0d3040ba61bc6e217f13a9888e7
 F src/os.c 8aeb0b0f40f8f5b0da03fe49706695adaf42d2f516ab95abc72e86c245e119de
 F src/os.h 48388821692e87da174ea198bf96b1b2d9d83be5dfc908f673ee21fafbe0d432
 F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85
 F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586
-F src/os_unix.c f6e91b8fd82af7afbfd073c4974ad6cdb8e62d9f65ceddb45167835a0567fdc0
-F src/os_win.c 85d9e532d0444ab6c16d7431490c2e279e282aa0917b0e988996b1ae0de5c5a0
+F src/os_unix.c 53b42b7c8c72433f6df81a66c956ba13d9a31f1e710ffebbc9de97573480571f
+F src/os_win.c 1dcd863d151c39b8f4b7eba3e2eb04366f0493fe0b54f54f64fb8115f749e895
 F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
 F src/pager.c 857dde3e525f665cfab23b6765bf04ca6638c0759ae7da6d63acfb463e230aa6
 F src/pager.h 217921e81eb5fe455caa5cda96061959706bcdd29ddb57166198645ef7822ac3
@@ -1804,7 +1804,10 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 5c499da8a4d0babc56883aa362ae124772fd9214a51169a88a5dee523d051658
-R 9c9226b3cda6f38720edaaa5f3813b03
+P 1d212957079a2caa30f3c9d80f43464781bc9634c2b5181a5814efbddae31711
+R f9ac6bdc834b55ba32484f2ca38d078f
+T *branch * faster-memory-barrier
+T *sym-faster-memory-barrier *
+T -sym-trunk *
 U drh
-Z 9bc13d9b07eaf6edcfa1cadc644eb143
+Z b8a96f494889c21be4a60fd7afef3f80
index b06c875795753002d40103ec52d4e459816ada53..6faa7eca3fae7d30faa5b45eb3836213d913d301 100644 (file)
@@ -1 +1 @@
-1d212957079a2caa30f3c9d80f43464781bc9634c2b5181a5814efbddae31711
\ No newline at end of file
+df66fec9bc5b8c012d2fef3e97b3f7c3850a195b417806bfddc00b88e99c97d7
\ No newline at end of file
index 9282d28016e5ca7f65f5ef14db1424a2e42e22b9..a22bdee04d0040acb2014342e5d7fb721f5b6f03 100644 (file)
@@ -93,6 +93,7 @@ void sqlite3MemoryBarrier(void){
   SQLITE_MEMORY_BARRIER;
 #elif defined(__GNUC__) && GCC_VERSION>=4001000
   __sync_synchronize();
+# define sqlite3MemoryBarrier_IS_RELIABLE 1
 #endif
 }
 
index 8a8ae289bac6fdc1d8bd9e7380513564115ca4ca..7c2dd68ec2d6caa4fe44dd1c4659a11dc5ee3c60 100644 (file)
@@ -87,8 +87,10 @@ void sqlite3MemoryBarrier(void){
   SQLITE_MEMORY_BARRIER;
 #elif defined(__GNUC__)
   __sync_synchronize();
+# define sqlite3MemoryBarrier_IS_RELIABLE 1
 #elif MSVC_VERSION>=1300
   _ReadWriteBarrier();
+# define sqlite3MemoryBarrier_IS_RELIABLE 1
 #elif defined(MemoryBarrier)
   MemoryBarrier();
 #endif
index f20763e5b0bc96dbdb7947ec6f919081d946c845..678b1c03250605b86718dc2f43b200fe379b1260 100644 (file)
@@ -4893,8 +4893,10 @@ static void unixShmBarrier(
   assert( fd->pMethods->xLock==nolockLock 
        || unixFileMutexNotheld((unixFile*)fd) 
   );
+#ifndef sqlite3MemoryBarrier_IS_RELIABLE
   unixEnterMutex();               /* Also mutex, for redundancy */
   unixLeaveMutex();
+#endif
 }
 
 /*
index aafc89f7d2d5b912496dbdb2e0498c341cae75c5..4aacaa1e1f576363d4588e59c3f51bc22be2d6fc 100644 (file)
@@ -4174,8 +4174,10 @@ static void winShmBarrier(
 ){
   UNUSED_PARAMETER(fd);
   sqlite3MemoryBarrier();   /* compiler-defined memory barrier */
+#ifndef sqlite3MemoryBarrier_IS_RELIABLE
   winShmEnterMutex();       /* Also mutex, for redundancy */
   winShmLeaveMutex();
+#endif
 }
 
 /*