[aarch64-port-dev ] RFR: Large code cache
Andrew Haley
aph at redhat.com
Thu Dec 11 15:28:10 UTC 2014
On 12/11/2014 03:15 PM, Edward Nevill wrote:
> 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.
Ouch! Good catch. Using rscratch1 there is an evil bit of code
(mine, probably). The comment above
Runtime1::generate_exception_throw says that its argument is passed on
the stack because registers must be preserved, but clearly they
aren't. Maybe its argument should be passed on the stack? But I'm OK
with using rscratch2 for the far_call if you like. Please remove (or
correct) the comment here:
// target: the entry point of the method that creates and posts the exception oop
// has_argument: true if the exception needs an argument (passed on stack because registers must be preserved)
OopMapSet* Runtime1::generate_exception_throw(StubAssembler* sasm, address target, bool has_argument) {
Andrew.
More information about the aarch64-port-dev
mailing list