-
Notifications
You must be signed in to change notification settings - Fork 22
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
[GC] Add option G1BarrierSimple to use simple g1 post barrier #59
Conversation
d7ad65a
to
de0e103
Compare
if (G1BarrierSimple) { | ||
for (; byte <= last_byte; byte++) { | ||
*byte = G1CardTable::dirty_card_val(); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not use memset(), like what we did in dragonwell11?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
|
||
__ load_byte_map_base(scratch); | ||
__ add(start, start, scratch); | ||
__ bind(L_loop); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assert(dirty_card_val == 0)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
__ mov64(tmp, disp); | ||
__ addptr(addr, tmp); | ||
__ bind(L_loop); | ||
__ movb(Address(addr, count, Address::times_1), 0); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use G1CardTable::dirty_card_val() like the rest of the code
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
@@ -98,6 +100,36 @@ void G1BarrierSetAssembler::gen_write_ref_array_pre_barrier(MacroAssembler* masm | |||
|
|||
void G1BarrierSetAssembler::gen_write_ref_array_post_barrier(MacroAssembler* masm, DecoratorSet decorators, | |||
Register addr, Register count, Register tmp) { | |||
#ifdef _LP64 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
G1BarrierSimple seems to permit X86. What happens on that platform?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The option will be ignored.
Probably not enough functional tests which will concern our coverage goals.. |
Summary: Provide option G1BarrierSimple to use simple G1 post barrier for better mutator performance Testing: CI pipeline Reviewers: yude, yifeng Issue: dragonwell-project#56
@@ -177,6 +177,25 @@ void G1Arguments::initialize() { | |||
FLAG_SET_ERGO(ParallelGCThreads, 1); | |||
} | |||
|
|||
if (G1BarrierSimple) { | |||
#if !defined(_LP64) || !(defined(X86) || defined(AARCH64)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
X86 is allowed here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
x86 32bit is not supported.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, took me a while to see this means !(x86_64 || aarch64)
Summary: Provide option G1BarrierSimple to use simple G1 post barrier for better mutator performance
Testing: CI pipeline
Reviewers: yude, yifeng
Issue: #56