CogVM binaries as per VMMaker.oscog-eem.1873/r3732 General: Make primitiveDoPrimitiveWithArgs usable as a mirror primitive, such that no message needs to be sent to the receiver to evaluate a primitive on it. This would make possible Context>>receiver: obj tryPrimitive: idx withArgs: args. Spur: Fix ephemerons (at least for Gule's test case). The mournQueue is of course a root for the scavenger and so must be visited at the start of a scavenge. Fix bug in markAllUnscannedEphemerons, enumerating correctly. Both fireEphemeronsInRememberedSet and fireEphemeronsOnEphemeronList must check for an ephemeron being fireable. An as-yet-firable ephemeron might get added to the ephemeron list and later its key may get tenured, rendering the ephemeron unfirable in that cycle. Fix marking of obj stack contents (markAndTraceObjStack:andContents:). Again tenuring could cause contents to be forwarded and hence read barrier is needed. Fix two bugs in ephemerons (found by Gille Polito - thanks!). 1. obj stack extension must happen with marking set to true if new pages aren't to be GC'ed. So move the assignments to marking out into markObjects: where they can surround nilUnmarkedWeaklingSlots. 2. fireAllUnscannedEphemerons needs to enumerate the unscannedEphemerons set properly, an oop at a time. Fix asserts that check for ephemerons so that the change in an ephemeron's format once it gets added to the mournQueue doesn't break the asserts; isMaybeFiredEphemeron[Format]: answer true for ephemerons and ephemerons in the mournQueue. Fix the Spur implementation of becomeForward:copyHash: for becomming immediates with copyHash false. Fix the scavenger's referenceCountRememberedReferents: for forwarding to immediates, and add a printRememberedSet convenience. Make pushLiteralVariable: store unfollowed literals back into the literal frame. Do so in a function off to the side, not inlined into the interpreter loop. With the above ephemeron changes Guille's test case passes: | e | Smalltalk supportsQueueingFinalization: true. e := (1 to: 200000) collect: [:i| Ephemeron key: (ObjectFinalizer receiver: 'test', 'asd' selector: #logCr) value: Object new]. Smalltalk garbageCollect! Plugins: Simplify the arg validation in FloatArrayPrims>>prmNormalize & primLength. Fix the configuration of the gdb-7.x support for for the GdbARMPlugin (COG=1). Put #if COG around a couple of changes to the gdb-7.10 code. Allow assert to be used in the plugin on MacOS X (-undefined dynamic_lookup) _,,,^..^,,,_ best, Eliot |
Cool!
I've just tested also your last version both on the simulator and in a compiled vm (with both edens of 4M and 2M) and we could not reproduce the crash anymore :). We pushed a bit more the case by creating 2M ephemerons and everything worked smoothly ;). I'll continue now working on the image side support of Ephemerons. Thanks!! Guille -------- Original Message --------
|
Free forum by Nabble | Edit this page |