ZJIT: Generate polymorphic branches for skewed polymorphic getivar (#16533)
This PR lets skewed polymorphic callsites to generate polymorphic code. Currently, skewed polymorphic callsites are considered monomorphic and don't use https://github.com/ruby/ruby/pull/16476, but doing so seems to help lobsters.
ZJIT: Per-ISEQ feedback for singleton class speculation
Instead of globally disabling NoSingletonClass optimization for a class once any singleton class has been seen, track invalidations per-ISEQ. When an ISEQ's NoSingletonClass patchpoint is invalidated, set a flag...
ZJIT: Mention Perfetto UI for SQL queries in trace-exits docs
ZJIT: Update trace-exits docs for Fuchsia trace format
The Stackprof-based documentation was outdated after the switch to Fuchsia Trace Format (.fxt) output. Update with Perfetto UI and trace_processor_shell workflow, including a working example and SQL query for finding hottest exit locations.
[DOC] Doc for Pathname#atime
Fix double-prefixed path in outdate-bundled-gems.rb (#16531)
When building with a relative srcdir (e.g., ../configure from a build directory), default_gem? was called with an already-prefixed path on line 149. Since default_gem? internally calls prefixed() again, this...
ZJIT: Dump side-exit locations in Fuchsia trace format (#16470)
This gives us instant access to all nice Fuchsia and Perfetto tooling, including zoomable, SQL queryable browsing for traces:
...
ZJIT: Skip too-complex shapes in polymorphic getivar (#16526)
Too-complex shapes use hash tables for ivar storage, and rb_shape_get_iv_index() doesn't work for them (it asserts in debug builds). Without this check, the polymorphic getinstancevariable optimization incorrectly returns nil for ivars on too-complex objects....
ZJIT: Fix spurious CompileError:OutOfMemory
We were accidentally marking OutOfMemory when actually the problem was that the native stack was too big. Slightly re-think emit APIs to make this mistake harder to make.
Now protoboeuf looks like this:
Top-1 compile error reasons (100.0% of total 5,798,926):...
ZJIT: Add new CompileError::NativeStackTooLarge
This helps distinguish an OutOfMemory (intended to be for running out of code space) from a native frame needing too much stack space. On protoboeuf, for example:
Top-2 compile error reasons (100.0% of total 5,798,926):...
View all revisions | View revisions
Also available in: Atom