< prev index next >

src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp

Print this page
*** 32,10 ***
--- 32,12 ---
  #include "c1/c1_MacroAssembler.hpp"
  #include "c1/c1_Runtime1.hpp"
  #include "c1/c1_ValueStack.hpp"
  #include "ci/ciArrayKlass.hpp"
  #include "ci/ciInstance.hpp"
+ #include "ci/ciUtilities.hpp"
+ #include "code/SCCache.hpp"
  #include "code/compiledIC.hpp"
  #include "gc/shared/collectedHeap.hpp"
  #include "gc/shared/gc_globals.hpp"
  #include "nativeInst_aarch64.hpp"
  #include "oops/objArrayKlass.hpp"

*** 527,10 ***
--- 529,22 ---
        break;
      }
  
      case T_LONG: {
        assert(patch_code == lir_patch_none, "no patching handled here");
+       if (SCCache::is_on_for_write()) {
+         // SCA needs relocation info for card table base
+         address b = c->as_pointer();
+         if (is_card_table_address(b)) {
+           __ lea(dest->as_register_lo(), ExternalAddress(b));
+           break;
+         }
+         if (AOTRuntimeConstants::contains(b)) {
+           __ load_aotrc_address(dest->as_register_lo(), b);
+           break;
+         }
+       }
        __ mov(dest->as_register_lo(), (intptr_t)c->as_jlong());
        break;
      }
  
      case T_OBJECT: {
< prev index next >