src/os_cpu/solaris_x86/vm/assembler_solaris_x86_64.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6705887 Sdiff src/os_cpu/solaris_x86/vm

src/os_cpu/solaris_x86/vm/assembler_solaris_x86_64.cpp

Print this page




  69   pushq(r11);
  70 
  71   movl(rdi, ThreadLocalStorage::thread_index());
  72   call(RuntimeAddress(CAST_FROM_FN_PTR(address, thr_getspecific)));
  73 
  74   popq(r11);
  75   popq(rsp);
  76   popq(r10);
  77   popq(r9);
  78   popq(r8);
  79   popq(rcx);
  80   popq(rdx);
  81   popq(rsi);
  82   popq(rdi);
  83   popq(thread); // load return value
  84   if (thread != rax) {
  85     popq(rax);
  86   }
  87 }
  88 
  89 bool MacroAssembler::needs_explicit_null_check(int offset) {
  90   // Identical to Sparc/Solaris code






  91   bool offset_in_first_page = 0 <= offset && offset < os::vm_page_size();
  92   return !offset_in_first_page;
  93 }


  69   pushq(r11);
  70 
  71   movl(rdi, ThreadLocalStorage::thread_index());
  72   call(RuntimeAddress(CAST_FROM_FN_PTR(address, thr_getspecific)));
  73 
  74   popq(r11);
  75   popq(rsp);
  76   popq(r10);
  77   popq(r9);
  78   popq(r8);
  79   popq(rcx);
  80   popq(rdx);
  81   popq(rsi);
  82   popq(rdi);
  83   popq(thread); // load return value
  84   if (thread != rax) {
  85     popq(rax);
  86   }
  87 }
  88 
  89 bool MacroAssembler::needs_explicit_null_check(intptr_t offset) {
  90   // Identical to Sparc/Solaris code
  91   if (UseCompressedOops) {
  92     uintptr_t heap_base = (uintptr_t)Universe::heap_base();
  93     if ((uintptr_t)offset >= heap_base) {
  94       offset = (intptr_t)(pointer_delta((void*)offset, (void*)heap_base, 1));
  95     }
  96   }
  97   bool offset_in_first_page = 0 <= offset && offset < os::vm_page_size();
  98   return !offset_in_first_page;
  99 }
src/os_cpu/solaris_x86/vm/assembler_solaris_x86_64.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File