-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix complex transi compact #547
Open
casperisfine
wants to merge
21
commits into
master
Choose a base branch
from
fix-complex-transi-compact
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Commits on Nov 16, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 3bc41f4 - Browse repository at this point
Copy the full SHA 3bc41f4View commit details
Commits on Nov 17, 2023
-
Skip test_ForwardingArgumentsNode
due to a failure on a CI http://ci.rvm.jp/results/trunk-iseq_binary@ruby-sp2-docker/4779277 ``` expected: == disasm: #<ISeq:prism_test_forwarding_arguments_node1@<compiled>:2 (2,8)-(4,11)> local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: 1]) [ 1] "..."@0 0000 putself ( 3) 0001 getlocal_WC_0 ?@-2 0003 splatarray false 0005 getblockparamproxy ?@-1, 0 0008 send <calldata!mid:prism_test_forwarding_arguments_node, argc:1, ARGS_SPLAT|ARGS_BLOCKARG|FCALL>, nil 0011 leave ( 2) actual: == disasm: #<ISeq:prism_test_forwarding_arguments_node1@<compiled>:2 (2,8)-(4,11)> local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: 1]) [ 1] "..."@0 0000 putself ( 3) 0001 getlocal_WC_0 ?@-2 0003 splatarray false 0005 getblockparamproxy "!"@-1, 0 0008 send <calldata!mid:prism_test_forwarding_arguments_node, argc:1, ARGS_SPLAT|ARGS_BLOCKARG|FCALL>, nil 0011 leave ( 2) /tmp/ruby/src/trunk-iseq_binary/tool/lib/iseq_loader_checker.rb:36:in `exit': exit (SystemExit) ```
Configuration menu - View commit details
-
Copy full SHA for 498b086 - Browse repository at this point
Copy the full SHA 498b086View commit details -
Refactor rb_obj_evacuate_ivs_to_hash_table
That function is a bit too low level to called from multiple places. It's always used in tandem with `rb_shape_set_too_complex` and both have to know how the object is laid out to update the `iv_ptr`. So instead we can provide two higher level function: - `rb_obj_copy_ivs_to_hash_table` to prepare a `st_table` from an arbitrary oject. - `rb_obj_convert_to_too_complex` to assign the new `st_table` to the old object, and safely free the old `iv_ptr`. Unfortunately both can't be combined into one, because `rb_obj_copy_ivar` need `rb_obj_copy_ivs_to_hash_table` to copy from one object to another.
Configuration menu - View commit details
-
Copy full SHA for 94c9f16 - Browse repository at this point
Copy the full SHA 94c9f16View commit details -
size_pool_idx_for_size: Include debugging info in error message
We ran into that case on our CI, including some sizes would help debug it much easier.
Configuration menu - View commit details
-
Copy full SHA for 940f2e7 - Browse repository at this point
Copy the full SHA 940f2e7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4a26a65 - Browse repository at this point
Copy the full SHA 4a26a65View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9ba49c6 - Browse repository at this point
Copy the full SHA 9ba49c6View commit details -
Configuration menu - View commit details
-
Copy full SHA for c2f2090 - Browse repository at this point
Copy the full SHA c2f2090View commit details -
Configuration menu - View commit details
-
Copy full SHA for db4303f - Browse repository at this point
Copy the full SHA db4303fView commit details -
Configuration menu - View commit details
-
Copy full SHA for e5d6b40 - Browse repository at this point
Copy the full SHA e5d6b40View commit details -
Configuration menu - View commit details
-
Copy full SHA for 85dcfef - Browse repository at this point
Copy the full SHA 85dcfefView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0a081a3 - Browse repository at this point
Copy the full SHA 0a081a3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 50b7b92 - Browse repository at this point
Copy the full SHA 50b7b92View commit details -
Configuration menu - View commit details
-
Copy full SHA for 229f6e5 - Browse repository at this point
Copy the full SHA 229f6e5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 585fdfe - Browse repository at this point
Copy the full SHA 585fdfeView commit details -
Configuration menu - View commit details
-
Copy full SHA for cbdac2f - Browse repository at this point
Copy the full SHA cbdac2fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7c99e43 - Browse repository at this point
Copy the full SHA 7c99e43View commit details -
Fix corruption when out of shape during ivar remove
Reproduction script: ``` o = Object.new 10.times { |i| o.instance_variable_set(:"@A#{i}", i) } i = 0 a = Object.new while RubyVM::Shape.shapes_available > 2 a.instance_variable_set(:"@i#{i}", 1) i += 1 end o.remove_instance_variable(:@a0) puts o.instance_variable_get(:@A1) ``` Before this patch, it would incorrectly output `2` and now it correctly outputs `1`.
Configuration menu - View commit details
-
Copy full SHA for 3dd77bc - Browse repository at this point
Copy the full SHA 3dd77bcView commit details -
Fix File.directory? doc hidding File::Stat#directory? doc
Now the documentation that was already in the codebase for `File::Stat#directory?` shows up.
Configuration menu - View commit details
-
Copy full SHA for ef72970 - Browse repository at this point
Copy the full SHA ef72970View commit details -
Fix ordering for auto compaction in get_overloaded_cme()
Found through GC.stress + GC.auto_compact crashes in rubyGH-8932. Previously, the compaction run within `rb_method_entry_alloc()` could move the `def->body.iseq.cref` and `iseqptr` set up before the call and leave the `def` pointing to moved addresses. Nothing was marking `def` during that GC run. Low probability reproducer: GC.stress = true GC.auto_compact = true arr = [] alloc = 1000.times.map { [] } alloc = nil a = arr.first GC.start
Configuration menu - View commit details
-
Copy full SHA for 24fe22a - Browse repository at this point
Copy the full SHA 24fe22aView commit details
Commits on Nov 18, 2023
-
Configuration menu - View commit details
-
Copy full SHA for f479e62 - Browse repository at this point
Copy the full SHA f479e62View commit details -
Pin object ivars while they are being copied in a hash
When transitioning an object to TOO_COMPLEX we copy all its ivar in a table, but if GC (and compaction) trigger in the middle of the transition, the old `iv_ptr` might still be the canonical ivar list and will be updated by the GC, but the reference we copied in the table will be outdated. So we must pin these reference until they are all copied and the object `iv_ptr` is pointing to the table. To do this we allocate a temporary TOO_COMPLEX object which we use as the host for the copy. TOO_COMPLEX objects are marked with `mark_tbl` which does pin references. Co-Authored-By: Alan Wu <XrXr@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 97fb07d - Browse repository at this point
Copy the full SHA 97fb07dView commit details
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.