| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
https://github.com/ruby/prism/commit/66248ac2f6
|
|
|
|
|
|
|
|
| |
* 'j' and 'J' are not pointer directives.
* size of 'j' and 'J' are platform-dependent, may not be 64-bit.
* mention corresponding C types when native-size modifier is added.
Co-Authored-By: BurdetteLamar <burdettelamar@yahoo.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A transparent scope is a scope that cannot have local variables added to
it's local table. When a local is added to it's table, it instead gets
added to the first non-transparent parent scope.
This is used in for loops to ensure the correct depth for local
variables inside the body
https://github.com/ruby/prism/commit/ddb8e82253
Co-Authored-By: Kevin Newton <kddnewton@gmail.com>
|
|
|
|
|
|
|
| |
Where `assert_match` converts string matcher argument to regexp first
with escaping, `assert_include` does the same thing simpler.
https://github.com/ruby/openssl/commit/81007e0a49
|
|
|
|
| |
https://github.com/ruby/openssl/commit/9a6e24daaf
|
| |
|
|
|
|
|
| |
`RbConfig::SIZEOF` has been added later than the time this check was
committed first.
|
|
|
|
| |
It is required in the always defined class level.
|
| |
|
|
|
|
|
|
|
|
| |
value
`--keep-file-descriptors` is true by default.
https://github.com/rubygems/rubygems/commit/b28e88e228
|
|
|
|
| |
https://github.com/ruby/prism/commit/b390553028
|
| |
|
| |
|
|
|
|
|
| |
By not allowlisting every OS that could have a GNU flavor linker,
it's also a bigger tent
|
|
|
|
|
|
|
| |
* Shink local types from 8 to 4 bytes, context from 21 to 17 bytes
Use repr(packed)
* Add comment about Type being limited to 4 bits
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, at the end of `leave` we did
`*caller_cfp->sp = return_value`, like the interpreter.
With future changes that leaves the SP field uninitialized for C frames,
this will become problematic. For cases like returning from
`rb_funcall()`, the return value was written above the stack and
never read anyway (callers use the copy in the return register).
Leave the return value in a register at the end of `leave` and have the
code at `cfp->jit_return` decide what to do with it. This avoids the
unnecessary memory write mentioned above. For JIT-to-JIT returns, it goes
through `asm.stack_push()` and benefits from register allocation for
stack temporaries.
Mostly flat on benchmarks, with maybe some marginal speed improvements.
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
|
|
|
|
|
|
| |
This node type was added for the multi-value experiment back in 2004.
The feature itself was removed after a few years, but this is its
remnant.
|
|
|
|
|
|
| |
```
yjit/yjit.mk:48: Extraneous text after `ifneq' directive
```
|
| |
|
|
|
|
| |
https://github.com/ruby/prism/commit/c3438aabea
|
|
|
|
| |
https://github.com/ruby/prism/commit/e100c6b8ae
|
|
|
|
| |
https://github.com/ruby/prism/commit/53efaf252d
|
|
|
|
|
| |
Each bit run is upto the right shift count, so the each mask does not
need more upper bits.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(https://github.com/ruby/stringio/pull/67)
Fix: https://github.com/ruby/stringio/issues/66
If length is 0, IO#pread don't even try to read the IO, it simply return
the buffer untouched if there is one or a new empty buffer otherwise.
It also doesn't validate the offset when length is 0.
cc @jdelStrother @kou
https://github.com/ruby/stringio/commit/37e9279337
Co-authored-by: Jean Boussier <jean.boussier@gmail.com>
|
|
|
|
|
|
|
|
| |
Fix nil handling in read_body and stream_check.
Fixes: #70
https://github.com/ruby/net-http/commit/36f916ac18
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ElseNode looks to have been implemented at the same time as IfNode, but
was resulting in a stack underflow error.
The following is from the test code
```
if foo
bar
end
```
```
❯ make run
compiling compile.c
linking miniruby
./miniruby -I./lib -I. -I.ext/common -r./arm64-darwin22-fake ./test.rb
CRUBY: **************************************************
== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(2,19)>
0000 putself ( 2)[Li]
0001 opt_send_without_block <calldata!mid:foo, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0003 branchunless 9
0005 putself
0006 opt_send_without_block <calldata!mid:bar, argc:0, FCALL|VCALL|ARGS_SIMPLE>
0008 pop
0009 putobject_INT2FIX_1_
0010 leave
PRISM: **************************************************
-- raw disasm--------
0000 putself ( 2)
0001 send <calldata:foo, 0>, nil ( 2)
0004 branchunless <L001> ( 2)
0006 jump <L000> ( 2)
<L000> [sp: 0]
* 0008 pop ( 1)
0009 putself ( 2)
0010 send <calldata:bar, 0>, nil ( 2)
0013 pop ( 2)
0014 jump <L002> ( 1)
<L001> [sp: 0]
<L002> [sp: -1]
0016 putobject 1 ( 2)
0018 leave ( 1)
---------------------
<compiled>: <compiled>:1: argument stack underflow (-1) (SyntaxError)
make: *** [run] Error 1
```
This commit fixes the stack underflow error for both IfNode and ElseNode
and introduces tests for them.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|