Gareth Rees
6cda91e1ee
Keep forward declarations for seg methods together.
...
Copied from Perforce
Change: 193842
2018-06-15 14:55:40 +01:00
Gareth Rees
de94fe2aa3
Catch-up merge from master sources at change 193831 to branch/2017-03-04/seg-methods.
...
Copied from Perforce
Change: 193836
2018-06-15 13:46:23 +01:00
Gareth Rees
f5ffaeb349
Mach_thread_self() can in theory "return mach_port_null if a resource shortage prevented the reception of the send right" so add a check in each case. (there's nothing we can do about it but at least we can notice.)
...
Copied from Perforce
Change: 193831
2018-06-15 12:54:28 +01:00
Gareth Rees
e9d454d796
It's safe to register a thread multiple times on macos, so there is no need for the guard.
...
Copied from Perforce
Change: 193828
2018-06-15 12:44:51 +01:00
Gareth Rees
307bc47730
Rename "mac os x" and "os x" to "macos", except for a few cases where for historical accuracy we want to continue to refer to the former name.
...
Copied from Perforce
Change: 193821
2018-06-15 12:15:36 +01:00
Gareth Rees
81874fdf08
Fix typo.
...
Copied from Perforce
Change: 193811
2018-06-15 11:15:42 +01:00
Gareth Rees
b0a73a5c71
Refactor atfork code to improve separation of concerns.
...
Copied from Perforce
Change: 193806
2018-06-15 10:58:33 +01:00
Gareth Rees
4eeac719ad
Start the collection and dereference the objects in the parent as well as the child.
...
Copied from Perforce
Change: 193800
2018-06-15 10:06:59 +01:00
Gareth Rees
ad432cf7c4
Fix issues identified in review by nb.
...
Copied from Perforce
Change: 193793
2018-06-14 19:31:30 +01:00
Gareth Rees
b1ac192a9a
Update design history. restore accidentally removed check.
...
Copied from Perforce
Change: 193787
2018-06-14 17:55:03 +01:00
Gareth Rees
6fda834973
Improve comments.
...
Copied from Perforce
Change: 193783
2018-06-14 17:44:41 +01:00
Gareth Rees
612b44060f
Fix ansi build.
...
Copied from Perforce
Change: 193769
2018-06-14 16:58:24 +01:00
Gareth Rees
b5e1965b3d
Avoid compilation errors from latest msvc.
...
Copied from Perforce
Change: 193768
2018-06-14 16:54:33 +01:00
Gareth Rees
f92f645f63
Support for fork on linux and freebsd.
...
Copied from Perforce
Change: 193765
2018-06-14 16:47:23 +01:00
Gareth Rees
e70b4c273c
Take locks before fork(), release them in the parent and reinitialize them in the child.
...
Add forktest target to the Xcode project.
Write design for fork safety and cross-reference from the code.
Update release notes.
Copied from Perforce
Change: 193760
2018-06-14 16:25:08 +01:00
Gareth Rees
2401957e62
Extend forktest so that it does allocation before the fork and collection afterwards; this ensures that we hit the read barrier and thus exercise the exception handling.
...
After forking in the child, re-create exception port and exception thread, and re-register the (only) thread with that port.
Copied from Perforce
Change: 193755
2018-06-14 12:54:35 +01:00
Gareth Rees
8146970622
Add fork test case (fails on os x if pthread_atfork is not called).
...
pthread_atfork handlers on OS X: in the child, update the mach port for the forking thread and move all other threads to the dead ring.
Copied from Perforce
Change: 193746
2018-06-13 17:09:07 +01:00
Gareth Rees
9de5c1dfbe
Avoid using deprecated function mps_fix and deprecated macro mps_fix in the test cases; use mps_fix12 instead.
...
Copied from Perforce
Change: 193726
2018-06-13 13:59:14 +01:00
Gareth Rees
52d6325133
New pool method poolsegpoolgen gets the pool generation for a segment. (this allows the segment whiten and reclaim methods not to need to know the pool class.)
...
Copied from Perforce
Change: 193084
ServerID: perforce.ravenbrook.com
2017-03-31 13:28:25 +01:00
Gareth Rees
2a24ad79df
Since we know that a segment belongs to a pool with a format at the point where we call segwalk, it makes sense to pass the format.
...
Copied from Perforce
Change: 193079
ServerID: perforce.ravenbrook.com
2017-03-31 09:15:41 +01:00
Gareth Rees
e615adda88
Avoid "result of 32-bit shift implicitly converted to 64 bits" warning from visual c.
...
Check AWL pool generation.
Update design.
Copied from Perforce
Change: 193076
ServerID: perforce.ravenbrook.com
2017-03-31 09:03:38 +01:00
Gareth Rees
a697ef913f
Move alignshift to pool structure allows us to eliminate duplicate code between awl and lo.
...
Copied from Perforce
Change: 193071
ServerID: perforce.ravenbrook.com
2017-03-31 08:41:14 +01:00
Gareth Rees
49ba7045fc
Only walk segments belonging to pools with an object format.
...
Copied from Perforce
Change: 193066
ServerID: perforce.ravenbrook.com
2017-03-31 08:05:59 +01:00
Gareth Rees
2962cdff8b
Check that arena, buffer, land classes override sets of related methods.
...
Copied from Perforce
Change: 193060
ServerID: perforce.ravenbrook.com
2017-03-30 20:43:43 +01:00
Gareth Rees
17c1449096
Check that segment classes override sets of related methods.
...
Add missing finish functions amcSegFinish, mrgLinkSegFinish, mrgRefSegFinish, sncSegFinish.
Check all class constructor results.
Copied from Perforce
Change: 193055
ServerID: perforce.ravenbrook.com
2017-03-30 11:37:41 +01:00
Gareth Rees
fd9cb83ec5
Avoid "format may be used uninitialized" warning.
...
Copied from Perforce
Change: 193050
ServerID: perforce.ravenbrook.com
2017-03-30 10:42:40 +01:00
Gareth Rees
79c2263d53
No need for poolclassmixinscan and abstractscanpool.
...
Copied from Perforce
Change: 193045
ServerID: perforce.ravenbrook.com
2017-03-30 10:23:15 +01:00
Gareth Rees
d4a68602ff
Changing segnowalk to segtrivwalk avoids the need for attrfmt (now we can walk all segments).
...
Copied from Perforce
Change: 193044
ServerID: perforce.ravenbrook.com
2017-03-30 10:18:22 +01:00
Gareth Rees
2ffd832103
Move access method from pool class to segment class.
...
Copied from Perforce
Change: 193039
ServerID: perforce.ravenbrook.com
2017-03-30 09:55:37 +01:00
Gareth Rees
8ab47f84d1
Remove unused variable pool.
...
Copied from Perforce
Change: 193034
ServerID: perforce.ravenbrook.com
2017-03-30 09:19:54 +01:00
Gareth Rees
a400239f7e
Move walk method from pool class to segment class.
...
Copied from Perforce
Change: 193028
ServerID: perforce.ravenbrook.com
2017-03-30 08:54:35 +01:00
Gareth Rees
b7a490ae32
Move fix and fixemergency methods from pool class to segment class.
...
Copied from Perforce
Change: 193023
ServerID: perforce.ravenbrook.com
2017-03-30 08:09:14 +01:00
Gareth Rees
9734df3505
Remove unused fixclosure field from trace and scanstate structures.
...
Copied from Perforce
Change: 193018
ServerID: perforce.ravenbrook.com
2017-03-30 07:14:10 +01:00
Gareth Rees
00a4ade456
Move scan method from pool class to segment class.
...
Copied from Perforce
Change: 193012
ServerID: perforce.ravenbrook.com
2017-03-29 19:17:17 +01:00
Gareth Rees
db5db0a9f3
Move reclaim method from pool class to segment class.
...
Copied from Perforce
Change: 193007
ServerID: perforce.ravenbrook.com
2017-03-29 17:13:45 +01:00
Gareth Rees
07adf64ebb
Move whiten method from pool class to segment class.
...
Copied from Perforce
Change: 193002
ServerID: perforce.ravenbrook.com
2017-03-29 16:22:14 +01:00
Gareth Rees
47a1715c2d
Move greyen method from pool class to segment class.
...
Copied from Perforce
Change: 192997
ServerID: perforce.ravenbrook.com
2017-03-29 15:58:32 +01:00
Gareth Rees
1dc5ac742a
Move the blacken method from the pool class to the segment class.
...
Copied from Perforce
Change: 192994
ServerID: perforce.ravenbrook.com
2017-03-29 15:32:17 +01:00
Gareth Rees
7c159fd2f8
Remove undocumented plinth function mps_lib_assert_fail_expr and rewrite assertp macro to call documented plinth function mps_lib_assert_fail instead.
...
Copied from Perforce
Change: 192941
ServerID: perforce.ravenbrook.com
2017-03-04 11:17:11 +00:00
Gareth Rees
f6356fc2ef
Remove used epvmdefaultsubsequentsegsize.
...
Copied from Perforce
Change: 192938
ServerID: perforce.ravenbrook.com
2017-03-04 11:02:31 +00:00
Gareth Rees
38dae4d616
Documentation improvements.
...
Copied from Perforce
Change: 192905
ServerID: perforce.ravenbrook.com
2017-02-18 09:38:15 +00:00
Gareth Rees
1c5e8269a8
Fix typos.
...
Copied from Perforce
Change: 192890
ServerID: perforce.ravenbrook.com
2017-02-11 11:30:15 +00:00
Gareth Rees
cb23106273
Add "cold end" and "hot end" to the glossary index.
...
Copied from Perforce
Change: 192660
ServerID: perforce.ravenbrook.com
2016-10-20 13:52:30 +01:00
Gareth Rees
148f538510
Merge design.mps.class-interface into design.mps.pool (as suggested by pekka p. pirinen on 1999-07-20).
...
Bring pool class method descriptions up to date.
Document bufferClass, bufferFill, bufferEmpty, totalSize, freeSize methods.
Document generic instance methods at design.mps.protocol.method.
Copied from Perforce
Change: 192642
ServerID: perforce.ravenbrook.com
2016-10-19 15:34:35 +01:00
Gareth Rees
79d301f528
Cherry-pick change 192595 from custom/cet/main, removing mps_addr_object. this function failed to solve the problem of decoding the stack on 64-bit windows, because the stack may need to be decoded after an mps assertion failure, in which case the arena lock is held and mps_addr_object cannot be called. we eventually solved the problem in a different way (using mps_arena_postmortem) and mps_addr_object is no longer used.
...
Copied from Perforce
Change: 192637
ServerID: perforce.ravenbrook.com
2016-10-19 14:13:38 +01:00
Gareth Rees
587a3efb20
Remove unused pool class methods tracebegin and traceend.
...
Remove unused event AMCTraceEnd.
The fixEmergency method must have the same type as the fix method because of how they are used.
Copied from Perforce
Change: 192636
ServerID: perforce.ravenbrook.com
2016-10-19 14:07:20 +01:00
Gareth Rees
7f18fa9802
Use nextmethod to call the superclass init method, instead of calling poolabsinit directly. regularize the error handling.
...
Copied from Perforce
Change: 192631
ServerID: perforce.ravenbrook.com
2016-10-19 11:34:04 +01:00
Gareth Rees
4a5bfd071a
Bring design.mps.message up to date and move it from old to current.
...
Copied from Perforce
Change: 192625
ServerID: perforce.ravenbrook.com
2016-10-18 22:35:13 +01:00
Gareth Rees
1b6774b850
Regularize the signature comments, for the benefit of design.mps.sig.test.uniq.
...
Copied from Perforce
Change: 192620
ServerID: perforce.ravenbrook.com
2016-10-18 18:30:50 +01:00
Gareth Rees
c5869484e5
Remove design documents for unsupported operating systems sunos, solaris and osf/1 (protsu, sso1al, vmo1, and vmso).
...
Update thread-safety and version-library design documents and move them from old to current.
Copied from Perforce
Change: 192617
ServerID: perforce.ravenbrook.com
2016-10-18 18:30:09 +01:00