[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