-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Minor fixes to write barriers #75478
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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -473,15 +473,19 @@ ShadowUpdateDisabled | |
| CheckCardTable | ||
| ; Branch to Exit if the reference is not in the Gen0 heap | ||
| ; | ||
| adr x12, wbs_ephemeral_low | ||
| ldp x12, x16, [x12] | ||
| ldr x12, wbs_ephemeral_low | ||
| cbz x12, SkipEphemeralCheck | ||
|
|
||
| cmp x15, x12 | ||
| blo Exit | ||
|
|
||
| cmp x15, x16 | ||
| bhi Exit | ||
| ldr x12, wbs_ephemeral_high | ||
|
|
||
| ; Compare against the upper bound if the previous comparison indicated | ||
| ; that the destination address is greater than or equal to the lower | ||
| ; bound. Otherwise, set the C flag (specified by the 0x2) so that the | ||
| ; branch to exit is taken. | ||
| ccmp x15, x12, #0x2, hs | ||
|
|
||
| bhs Exit | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The I wonder which would be better though. In theory the ephemeral check should more often fail than pass, statistically. In a large heap most objects are tenured. Ephemeral set is supposed to be small. On the other hand both patterns probably work the same on a speculative CPU, but the predicated pattern is shorter by one instruction.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. And on server GC ephemeral check will always pass. I think, since we are touching this, it should be switched to the predicated form like in |
||
|
|
||
| SkipEphemeralCheck | ||
| ; Check if we need to update the card table | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.