Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementation of std::atomic::wait #593

Merged
merged 321 commits into from Aug 2, 2020
Merged
Show file tree
Hide file tree
Changes from 47 commits
Commits
Show all changes
321 commits
Select commit Hold shift + click to select a range
8d85f70
Don't initialize spin count each time
AlexGuteniev Mar 14, 2020
c26e5b4
Feature macro
AlexGuteniev Mar 15, 2020
1d88b03
Satellite DLL fix
AlexGuteniev Mar 15, 2020
72fda00
Satellite DLL fix
AlexGuteniev Mar 15, 2020
246fe9f
test for atomic wait
AlexGuteniev Mar 15, 2020
863669b
test for atomic wait
AlexGuteniev Mar 15, 2020
74c709a
clang format
AlexGuteniev Mar 15, 2020
e5f8146
newline
AlexGuteniev Mar 15, 2020
64e1287
Remove fallback from Win8+ build
AlexGuteniev Mar 15, 2020
a8cf481
[[maybe_unused]]
AlexGuteniev Mar 15, 2020
0603fdf
Spinning for indirect wait
AlexGuteniev Mar 15, 2020
9be76a5
Flow control braces, explain added spin
AlexGuteniev Mar 15, 2020
0b5cc74
chance not to inline _Atomic_init_spin_count
AlexGuteniev Mar 15, 2020
47457fd
Move addressof out of loop
AlexGuteniev Mar 15, 2020
a25fea3
Clearer phase names
AlexGuteniev Mar 15, 2020
040bcc8
Optimize spinning.
AlexGuteniev Mar 15, 2020
9472e4a
Lower bits to wait phases that bounded with ABI
AlexGuteniev Mar 15, 2020
16d481b
make sure we don't spin for native direct waits
AlexGuteniev Mar 15, 2020
f7e852e
don't get spin count for native direct waits
AlexGuteniev Mar 15, 2020
1c57f0b
phase not even needed for direct waits
AlexGuteniev Mar 15, 2020
93400c5
Fix lost wake on indirect wait
AlexGuteniev Mar 16, 2020
234f7af
x86 build
AlexGuteniev Mar 16, 2020
5fd3372
x86 build
AlexGuteniev Mar 16, 2020
4964fe2
distinguish counter and SRW Lock phases
AlexGuteniev Mar 16, 2020
f49fa21
fix memory model issue
AlexGuteniev Mar 16, 2020
7479840
Lock-free tracking of sequence
AlexGuteniev Mar 16, 2020
d5cbe83
the STL is _Ugly
AlexGuteniev Mar 16, 2020
30ff8e4
yvals.h macro instead of constexpr
AlexGuteniev Mar 16, 2020
7ff6da0
Condition for unsigned + clang-format
AlexGuteniev Mar 16, 2020
b6f062b
SATELLITE_3 has a name
AlexGuteniev Mar 16, 2020
63a69ed
SATELLITE_3 has a name
AlexGuteniev Mar 16, 2020
8fb9e4f
trim space
AlexGuteniev Mar 16, 2020
f4e9bdd
Merge remote-tracking branch 'upstream/master'
AlexGuteniev Mar 17, 2020
a54b273
_WIN32_WINNT is too fragile, let's avoid
AlexGuteniev Mar 17, 2020
940f03a
missing break
AlexGuteniev Mar 17, 2020
0c8fe75
clarify _Wait_context being used even for _Is_direct
AlexGuteniev Mar 17, 2020
7738caa
Lost wake prevention
AlexGuteniev Mar 17, 2020
45ce1af
Import/export via .def file
AlexGuteniev Mar 17, 2020
762b7c8
clang format
AlexGuteniev Mar 17, 2020
58ed81e
.def whitespace
AlexGuteniev Mar 17, 2020
075bf51
spelling
AlexGuteniev Mar 17, 2020
bee07b9
Merge remote-tracking branch 'origin/master'
AlexGuteniev Mar 21, 2020
23309b7
Merge branch 'master' of https://github.com/AlexGutenev/STL
AlexGuteniev Mar 21, 2020
a43e14c
Merge remote-tracking branch 'upstream/master'
AlexGuteniev Mar 23, 2020
bbf6283
Merge branch 'master' of https://github.com/AlexGutenev/STL
AlexGuteniev Mar 23, 2020
20ddecf
Merge remote-tracking branch 'upstream/master'
AlexGuteniev Mar 27, 2020
03707c7
Merge branch 'master' into master
cbezault Mar 31, 2020
5c72904
Merge remote-tracking branch 'upstream/master'
AlexGuteniev Apr 1, 2020
50d8d39
Merge branch 'master' of https://github.com/AlexGutenev/STL
AlexGuteniev Apr 1, 2020
24d1cf9
clang format
AlexGuteniev Apr 1, 2020
7cf30f3
clang format
AlexGuteniev Apr 1, 2020
bbf210e
whitespace
AlexGuteniev Apr 1, 2020
fd034a7
Missing / incorrect / #if _HAS_CXX20
AlexGuteniev Apr 1, 2020
c2bda90
warning signed / unsigned
AlexGuteniev Apr 1, 2020
541b7fb
Update stl/inc/atomic
AlexGuteniev Apr 3, 2020
2e5e169
Update stl/src/atomic_wait.cpp
AlexGuteniev Apr 3, 2020
c12fcf3
Merge remote-tracking branch 'upstream/master'
AlexGuteniev Apr 3, 2020
184abde
Merge branch 'master' of https://github.com/AlexGutenev/STL
AlexGuteniev Apr 3, 2020
c7302b5
preprocessor macro test
AlexGuteniev Apr 3, 2020
8e4fc45
minor review comments
AlexGuteniev Apr 3, 2020
bc5eb04
put back this top level const
AlexGuteniev Apr 3, 2020
5246edc
constant test
AlexGuteniev Apr 3, 2020
0e2eb5e
clang format
AlexGuteniev Apr 3, 2020
681e564
clang format
AlexGuteniev Apr 3, 2020
d0ef8a6
Remove parts extracted to #684
AlexGuteniev Apr 3, 2020
99b5df0
more std::size_t
AlexGuteniev Apr 3, 2020
f1bc31b
Correct captialization of synch module
AlexGuteniev Apr 4, 2020
64eb2c1
explicit unicode string
AlexGuteniev Apr 4, 2020
cd75554
msbuild update #689
AlexGuteniev Apr 6, 2020
dc60ff8
Revert "msbuild update #689"
AlexGuteniev Apr 6, 2020
49342fd
Merge remote-tracking branch 'upstream/master'
AlexGuteniev Apr 7, 2020
8661d67
delete statically unavailable functions
AlexGuteniev Apr 7, 2020
1dbdbbd
put back const removed by mistake
AlexGuteniev Apr 7, 2020
f44c349
delete top level const
AlexGuteniev Apr 7, 2020
8ca4153
= delete does not work unfortunately
AlexGuteniev Apr 7, 2020
88d5970
second taking on statically deleting fallback
AlexGuteniev Apr 7, 2020
8a3ac3a
= delete does not work even with constexpr if
AlexGuteniev Apr 7, 2020
f1601c7
Move _Expected cast out of loop (debug mode perf)
AlexGuteniev Apr 8, 2020
4c17011
Merge remote-tracking branch 'origin/master' into HEAD
BillyONeal Apr 10, 2020
d4b0fc2
Add wait/notify_one to atomic<shared_ptr<T>> and atomic<weak_ptr<T>>.
BillyONeal Apr 10, 2020
f1a8760
Removing macros, now I have ICE
AlexGuteniev Apr 10, 2020
5f4a523
Merge branch 'master' of https://github.com/AlexGutenev/STL
AlexGuteniev Apr 10, 2020
2983588
Revert "Removing macros, now I have ICE"
AlexGuteniev Apr 10, 2020
b35717e
clang format
AlexGuteniev Apr 10, 2020
af591a2
Avoid waiting on unlocked
AlexGuteniev Apr 10, 2020
4fe13ae
clang format
AlexGuteniev Apr 10, 2020
e1758d9
Merge remote-tracking branch 'upstream/master'
AlexGuteniev Apr 11, 2020
31b9785
Provision for timed wait for timed primitives
AlexGuteniev Apr 12, 2020
3e91fba
Timed wait: unwait on timeout path
AlexGuteniev Apr 12, 2020
83a973d
fix ARM build
AlexGuteniev Apr 12, 2020
c6fa8aa
[[fallthough]] guard
AlexGuteniev Apr 12, 2020
cb352d0
Preparations for internal re-use
AlexGuteniev Apr 12, 2020
29ff60c
clang format
AlexGuteniev Apr 12, 2020
b2ef4ab
spinlock flavor of wait, solves #370
AlexGuteniev Apr 12, 2020
9a1ba8f
clang format
AlexGuteniev Apr 12, 2020
1e875cb
fix ARM build
AlexGuteniev Apr 12, 2020
8fc931e
revert ODR breaking part of spinlock enhancement
AlexGuteniev Apr 12, 2020
ee7b664
Fixes #598
AlexGuteniev Apr 12, 2020
7bddb91
forgot to remove this
AlexGuteniev Apr 12, 2020
4c320b4
get back __std_execution_wake_by_address_all
AlexGuteniev Apr 13, 2020
5714886
unwait in parallel_algorithms.cpp
AlexGuteniev Apr 13, 2020
80203b5
unwait in parallel_algorithms.cpp
AlexGuteniev Apr 13, 2020
0fa17f7
paranoid on magic static avoidance
AlexGuteniev Apr 13, 2020
50a5b3e
avoid dead code path fallback
AlexGuteniev Apr 14, 2020
f2256d9
downlevel OS testing
AlexGuteniev Apr 14, 2020
83b7066
newlines
AlexGuteniev Apr 14, 2020
1309b30
fix ARM build, fix __std_atomic_set_api_level robustness
AlexGuteniev Apr 14, 2020
2078793
reduce waiting time to avoid tests to time out
AlexGuteniev Apr 14, 2020
55c2737
Fix exponential sleep growth
AlexGuteniev Apr 14, 2020
efc2319
Delete XP test as XP wait is not precise anyway
AlexGuteniev Apr 14, 2020
5e2345d
clang format
AlexGuteniev Apr 14, 2020
9951b78
Return XP test. Let's just call XP impl "imprecise
AlexGuteniev Apr 14, 2020
5f68da4
fix condition
AlexGuteniev Apr 14, 2020
fb0dc41
ARM build
AlexGuteniev Apr 14, 2020
3703452
clang format
AlexGuteniev Apr 14, 2020
265b025
still remove XP test
AlexGuteniev Apr 15, 2020
cb79063
add check for duration to see chick case fails
AlexGuteniev Apr 15, 2020
f1d91f1
Get back XP tests, reduce waiting duration more
AlexGuteniev Apr 15, 2020
ededc48
parallel test run
AlexGuteniev Apr 15, 2020
c3fc4d5
clang format
AlexGuteniev Apr 15, 2020
9d8eb82
Fix test failure
AlexGuteniev Apr 15, 2020
fe4d19d
Avoid spinning on ARM properly
AlexGuteniev Apr 15, 2020
408836f
Spinlock unwait in the right place
AlexGuteniev Apr 15, 2020
6611620
Revert "parallel test run"
AlexGuteniev Apr 15, 2020
74a45ef
Don't test duration,
AlexGuteniev Apr 15, 2020
b98b0ac
Merge remote-tracking branch 'upstream/master'
AlexGuteniev Apr 24, 2020
e3cde08
remove atomic wait workaround
AlexGuteniev Apr 24, 2020
20cafc0
time precision for potential future extension
AlexGuteniev Apr 25, 2020
a4d71e8
revert changes to atomic spinlock, can do separately
AlexGuteniev Apr 25, 2020
88adaf5
clang format
AlexGuteniev Apr 25, 2020
6aec891
fix build
AlexGuteniev Apr 25, 2020
bd88a37
atomic_shared_ptr lock backed by atomic wait
AlexGuteniev Apr 28, 2020
bb54241
whitespace
AlexGuteniev Apr 28, 2020
61cb5b9
reload after wait!
AlexGuteniev Apr 28, 2020
c186cc9
Operator precedence, relaxed order, redundant yield
AlexGuteniev Apr 28, 2020
b0866ef
Fix expectation for last case
AlexGuteniev Apr 28, 2020
b9113b6
`notify_all` to prevent deadlock with many waiters
AlexGuteniev Apr 28, 2020
54a5831
clang format
AlexGuteniev Apr 28, 2020
39124da
Merge remote-tracking branch 'upstream/master'
AlexGuteniev Apr 30, 2020
faa61e0
no .def file, forwarders, fix makefile
AlexGuteniev Apr 30, 2020
cd2c966
It's reverse
AlexGuteniev Apr 30, 2020
bdb1675
Optimize fences
AlexGuteniev May 1, 2020
d3eac91
Merge remote-tracking branch 'upstream/master'
AlexGuteniev May 1, 2020
cb93f7c
build fix
AlexGuteniev May 1, 2020
1b78fae
pragma linker has problems on x86
AlexGuteniev May 2, 2020
29a569f
explicit parentheses to fix build warning
AlexGuteniev May 2, 2020
d1c5ae3
explicit parentheses to fix build warning
AlexGuteniev May 2, 2020
75567a9
This is wrong, extra barrier is not helpful.
AlexGuteniev May 4, 2020
3cbb774
drop XP support in import library
AlexGuteniev May 6, 2020
be86c90
Formatting
AlexGuteniev May 6, 2020
57f15ca
ARM build
AlexGuteniev May 6, 2020
ca11289
Merge remote-tracking branch 'upstream/master'
AlexGuteniev May 7, 2020
cbb2803
I expect it to pass
AlexGuteniev May 7, 2020
f2f01a1
Don't try to support nonexistent "old ABI"
AlexGuteniev May 8, 2020
7b4a03a
formatting
AlexGuteniev May 8, 2020
9acff2e
Update stl/inc/xatomic_wait.h
AlexGuteniev May 9, 2020
7069749
Update stl/inc/xatomic_wait.h
AlexGuteniev May 9, 2020
380c281
Update stl/inc/memory
AlexGuteniev May 9, 2020
073f30b
Update stl/inc/atomic
AlexGuteniev May 9, 2020
9c5cb7e
correctly mark test as passing
AlexGuteniev May 9, 2020
e9969c1
duplicate duplicate
AlexGuteniev May 9, 2020
237f535
Merge branch 'master' of https://github.com/AlexGuteniev/STL
AlexGuteniev May 9, 2020
750356b
abort on unexpected situation even in release
AlexGuteniev May 9, 2020
0f89af1
actually don't see a value in this check
AlexGuteniev May 9, 2020
84d32f0
too much mimic of existing code by too much copying
AlexGuteniev May 9, 2020
2dbcf8e
Merge remote-tracking branch 'upstream/master'
AlexGuteniev May 9, 2020
53f056f
Merge remote-tracking branch 'upstream/master'
AlexGuteniev May 13, 2020
edff7ca
More time to pass test
AlexGuteniev May 13, 2020
f8f9abe
Merge remote-tracking branch 'upstream/master'
AlexGuteniev May 23, 2020
9ca6c15
Merge remote-tracking branch 'upstream/master'
AlexGuteniev May 30, 2020
4287866
Merge remote-tracking branch 'origin/master' into HEAD
BillyONeal Jun 30, 2020
f34dee5
Merge remote-tracking branch 'origin/master' into atomic_wait
BillyONeal Jul 8, 2020
05a65fa
Add msbuild build system.
BillyONeal Jul 8, 2020
e46c447
Manually inline _Save_function_pointer_relaxed -- I think atomic ops …
BillyONeal Jul 8, 2020
7f05ee2
More build fixes discovered in DevDiv test harness
BillyONeal Jul 9, 2020
4dcd154
Merge remote-tracking branch 'origin/master' into atomic_wait
BillyONeal Jul 9, 2020
9dcb98e
clang-format
BillyONeal Jul 9, 2020
83290f4
Fix cmake dependency information for the .src, thanks to Robert Schum…
BillyONeal Jul 9, 2020
f8e6cea
_Ugly some things in atomic_wait.cpp
BillyONeal Jul 14, 2020
4c454e7
Merge _Atomic_wait_direct_timed_for_internal_spinlock into only caller.
BillyONeal Jul 14, 2020
6e3951d
de-inline template
BillyONeal Jul 14, 2020
e80bbc6
Remove synchronization.lib pragma which is problematic for _ONECORE p…
BillyONeal Jul 14, 2020
bb15189
Rename _Deadline_picoseconds to _Reserved as it is currently unused.
BillyONeal Jul 15, 2020
84df7ef
Rename _Get_remaining_waiting_time to _Get_remaining_wait_millisecond…
BillyONeal Jul 15, 2020
653c270
Merge remote-tracking branch 'origin/master' into atomic_wait
BillyONeal Jul 15, 2020
f866822
fixup
BillyONeal Jul 15, 2020
e8b38a1
Add missing _INLINE_VAR.
BillyONeal Jul 15, 2020
c8f10c6
Merge remote-tracking branch 'upstream/master'
AlexGuteniev Jul 15, 2020
f3ffdaf
Merge remote-tracking branch 'origin/master'
AlexGuteniev Jul 15, 2020
8fa9d54
Update stl/inc/atomic
AlexGuteniev Jul 15, 2020
21b0352
Update stl/inc/memory
AlexGuteniev Jul 15, 2020
c3aa7e1
Fix CMakeLists.txt declaration order.
BillyONeal Jul 15, 2020
eb99cd0
Fix test sort order.
BillyONeal Jul 15, 2020
0b0de84
Use <assert.h> and pragma once.
BillyONeal Jul 15, 2020
74ab22a
STL CR feedback:
BillyONeal Jul 15, 2020
aaf8f46
Merge remote-tracking branch 'AlexGuteniev/master' into atomic_wait
BillyONeal Jul 15, 2020
0334bda
Compiler errors.
BillyONeal Jul 15, 2020
c281047
Fix the same build system bug in the cmake version.
BillyONeal Jul 15, 2020
7565517
Find missing ^^^s with regex:
BillyONeal Jul 16, 2020
bdeb5ad
Bill forgot to save before committing.
BillyONeal Jul 16, 2020
dcf4216
remove spinner to pass tests
AlexGuteniev Jul 18, 2020
1caf417
Correct default for wait phase
AlexGuteniev Jul 18, 2020
71d5d1b
whitespace
AlexGuteniev Jul 18, 2020
54c2eda
rewrite to avoid the complexity of indirect wait
AlexGuteniev Jul 18, 2020
ba3d8c8
clang format
AlexGuteniev Jul 18, 2020
c1157f7
notify_one for indirect wake
AlexGuteniev Jul 19, 2020
7327523
clang format
AlexGuteniev Jul 19, 2020
fed4f21
optimize acquire wait functions
AlexGuteniev Jul 19, 2020
8aab61e
Merge remote-tracking branch 'upstream/master'
AlexGuteniev Jul 21, 2020
f5d945e
remove unwait
AlexGuteniev Jul 21, 2020
21a395c
All. Sorry we don't track waiter count.
AlexGuteniev Jul 21, 2020
94f2f87
actually one, we don't track the waiting too
AlexGuteniev Jul 21, 2020
6d78db0
no wheel invention actually
AlexGuteniev Jul 21, 2020
b893242
}
AlexGuteniev Jul 21, 2020
b627266
whitespace
AlexGuteniev Jul 21, 2020
cebacd5
Merge remote-tracking branch 'upstream/master'
AlexGuteniev Jul 21, 2020
c5cb0b9
apply padding bits resolution
AlexGuteniev Jul 21, 2020
18e5184
attempt on 16 bytes case
AlexGuteniev Jul 21, 2020
6726c5d
attempt on 16 bytes case
AlexGuteniev Jul 21, 2020
1b4be08
clang format
AlexGuteniev Jul 21, 2020
fe33a36
attempt on 16 bytes case
AlexGuteniev Jul 21, 2020
73c5cc6
Add test for discovered notify_all_indirect deadlock.
BillyONeal Jul 22, 2020
1244e9c
Fix deadlock in notify_all.
BillyONeal Jul 22, 2020
c55368f
Add RAII guards.
BillyONeal Jul 22, 2020
b308261
Remove timed variants from header; timed infrastructure on the other …
BillyONeal Jul 23, 2020
c326f7f
Use return instead of break in the indirect mode.
BillyONeal Jul 23, 2020
66a2e6e
Add comments explaining the ABI layer to <xatomic_wait.h> and remove …
BillyONeal Jul 23, 2020
7edc9f6
Merge pull request #5 from BillyONeal/atomic_upstream
AlexGuteniev Jul 23, 2020
6279b7b
Document deliberately waking before SRWLOCK exit
AlexGuteniev Jul 23, 2020
de50735
Direct wait to API convention for aliasobj
AlexGuteniev Jul 23, 2020
ba5364d
Some respect to padding bits
AlexGuteniev Jul 23, 2020
b9acf63
clang format
AlexGuteniev Jul 23, 2020
3be75d0
Avoid killing correct pad bits of observed value
AlexGuteniev Jul 23, 2020
3ac6b7b
Minor improvements
AlexGuteniev Jul 23, 2020
50b6861
clang format
AlexGuteniev Jul 24, 2020
4d764eb
no loop needed here, caller handles spurious wakes
AlexGuteniev Jul 24, 2020
9a8de74
STL CR comments.
BillyONeal Jul 24, 2020
2bfa19a
fix `memcmp` race
AlexGuteniev Jul 29, 2020
5471aad
optimize: check before waiting
AlexGuteniev Jul 29, 2020
4266db1
newlines
AlexGuteniev Jul 29, 2020
20356ed
Let's implement this in scope of atomic_ref
AlexGuteniev Jul 29, 2020
fbb3d11
clang format
AlexGuteniev Jul 29, 2020
df57ccd
don't need this if statically available
AlexGuteniev Jul 29, 2020
7f57f6a
STL review: remove wrong const, add noexcept
AlexGuteniev Jul 29, 2020
fa295ec
tests complain
AlexGuteniev Jul 29, 2020
45b0923
Merge remote-tracking branch 'origin/master' into HEAD
BillyONeal Jul 31, 2020
0968ed2
* Fix timeouts correctness bug wherein we would blow up the timeout o…
BillyONeal Aug 1, 2020
b4478b7
Add perf improvement special case for no timeout to reduce the number…
BillyONeal Aug 1, 2020
a832e67
Apply Stephan and Casey code review fixes.
BillyONeal Aug 1, 2020
c9f9f4d
Remove const from unnamed function parameter
CaseyCarter Aug 1, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view