EOC octets are required at the end of contents of a constructed encoding
that uses the indefinite length form. This cannot be assumed from the
end of the input. Raise an exception when necessary.
https://github.com/ruby/openssl/commit/bc20c13a7c
The fstring table size used to be reported as part of the VM
size, but since it was refactored to be lock-less it was no
longer reported.
Since it's now wrapped by a `T_DATA`, we can implement its
`dsize` function and get a valuable insight into the size
of the table.
```
{"address":"0x100ebff18", "type":"DATA", "shape_id":0, "slot_size":80,
"struct":"VM/fstring_table", "memsize":131176, ...
```
* Show failing test
* Add second test case
* Add empty NewArray setup
* Update opt_tests and fix NewArray instantiation
* Add code generation for NewArray
* Add NewArray ordering test
* Implement JIT-to-JIT calls
* Use a closer dummy address for Arm64
* Revert an obsoleted change
* Revert a few more obsoleted changes
* Fix outdated comments
* Explain PosMarkers for CCall
* s/JIT code/machine code/
* Get rid of ParallelMov
In case the callee writes to the caller's locals, we need to be able to
immediately side-exit because our frame's invariants might have been
invalidated.
If in the course of optimization we rewrite the Send, we can choose to
remove the PatchPoint too---but it's not an error to keep it around.
* Add --zjit-profile-interval option
* Fix min to max
* Avoid rewriting instructions for --zjit-call-threshold=1
* Rename the option to --zjit-num-profiles
* Remove immediately deferenced borrow operators
source: https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
* Remove unnecessary cast as i64
Since Const::CInt64 wraps i64, it is unnecessary to cast to i64.
* Remove unnecessary borrow operators
* Beautify assign operation syntax
* Use .is_null() convenience method
* Omit .into() call from u32 to u32
* Use more descriptive std::ptr::null<VALUE>()
In lieu of casting a literal as a type, opt to use the convenience type.
* Use sized integer literal
* Simplify pattern matching to explicit check
* Remove redundant statements
* Remove .clone() since A64 implements Copy
* Remove .clone() since InsnId implements Copy
.
* Dereference since *const rb_call_data implements Copy
* Remove unnecessary return statement
* Remove unnecessary braces
* Use .is_empty() over length checks
* Remove unnecessary conversion handling
Since i32 can always fit into i64 (the inner type in Opnd::Imm), the conversion is infallibile.
* Use slice notation in lieu of Vec
https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg
* Simplify match statement
Dead code elimination (DCE) is like garbage collection for your HIR
graph: it removes instructions that are not referenced by the "root
set"---in this case, the instructions marked critical.