[aarch64-port-dev ] RFR: Large code cache
Edward Nevill
edward.nevill at gmail.com
Thu Dec 11 15:15:48 UTC 2014
On Tue, 2014-12-09 at 19:03 +0000, Andrew Haley wrote:
> New patch at
>
> http://cr.openjdk.java.net/~aph/11rch64-large-codecache-01/
>
> I addresses all of your issues except the one about NativeGeneralJump::insert_unconditional
> using MacroAssembler. I think that's fine.
>
> Andrew.
>
Hi Andrew,
This patch applies cleanly now thx.
There are a couple of clashes with rscratch1 and far_call found in JTreg.
In hotspot/src/cpu/aarch64/vm/c1_CodeStubs_aarch64.cpp
73 if (_index->is_cpu_register()) {
74 __ mov(rscratch1, _index->as_register());
75 } else {
76 __ mov(rscratch1, _index->as_jint()); <<<<<<<<< LOOK HERE
77 }
78 Runtime1::StubID stub_id;
79 if (_throw_index_out_of_bounds_exception) {
80 stub_id = Runtime1::throw_index_exception_id;
81 } else {
82 stub_id = Runtime1::throw_range_check_failed_id;
83 }
84 __ far_call(RuntimeAddress(Runtime1::entry_for(stub_id)));
288 if (_obj->is_cpu_register()) {
289 __ mov(rscratch1, _obj->as_register()); <<<<<<<<<< LOOK HERE
290 }
291 __ far_call(RuntimeAddress(Runtime1::entry_for(_stub)));
Patched as below. I will give it a complete run through JTreg and also jcstress.
All the best,
Ed.
--- CUT HERE ---
exporting patch:
# HG changeset patch
# User enevill
# Date 1418310277 18000
# Thu Dec 11 10:04:37 2014 -0500
# Node ID 6b2ce9021b232c46c1c615a447557dfc290dad72
# Parent c1fed06f5d8381c52bfde1ad75c8bb8e0e28eab5
Fix a couple of conflicts with rscratch1 and far_call
diff -r c1fed06f5d83 -r 6b2ce9021b23 src/cpu/aarch64/vm/c1_CodeStubs_aarch64.cpp
--- a/src/cpu/aarch64/vm/c1_CodeStubs_aarch64.cpp Thu Dec 11 09:48:07 2014 -0500
+++ b/src/cpu/aarch64/vm/c1_CodeStubs_aarch64.cpp Thu Dec 11 10:04:37 2014 -0500
@@ -81,7 +81,7 @@
} else {
stub_id = Runtime1::throw_range_check_failed_id;
}
- __ far_call(RuntimeAddress(Runtime1::entry_for(stub_id)));
+ __ far_call(RuntimeAddress(Runtime1::entry_for(stub_id)), NULL, rscratch2);
ce->add_call_info_here(_info);
ce->verify_oop_map(_info);
debug_only(__ should_not_reach_here());
@@ -288,7 +288,7 @@
if (_obj->is_cpu_register()) {
__ mov(rscratch1, _obj->as_register());
}
- __ far_call(RuntimeAddress(Runtime1::entry_for(_stub)));
+ __ far_call(RuntimeAddress(Runtime1::entry_for(_stub)), NULL, rscratch2);
ce->add_call_info_here(_info);
debug_only(__ should_not_reach_here());
}
--- CUT HERE ---
More information about the aarch64-port-dev
mailing list