Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Clean up pointer cast in `push_root` Only check `jl_is_datatype` once on the tag. * Rename `push_root` to avoid confusion with `gc_push_root` Also pass the whole tag in to reduce the number of load on the tag. * Atomically check and set gc bits This makes sure we won't overcount with parallel marking. Note that the setmark is still not threadsafe due to global metadata update. * `gc_setmark` overhaul * Add fast path to do nothing if the object was already marked * Return whether the object's gc bits are changed or not * Use this info to replace the custom logic for arrays * Separate marking and scanning of the object Make sure in `gc_mark_obj` that the object will only be scanned once.
- Loading branch information