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

src/os_cpu/linux_x86/vm/assembler_linux_x86_64.cpp

Print this page




  51    movl(rdi, ThreadLocalStorage::thread_index());
  52    call(RuntimeAddress(CAST_FROM_FN_PTR(address, pthread_getspecific)));
  53 
  54    popq(r11);
  55    popq(rsp);
  56    popq(r10);
  57    popq(r9);
  58    popq(r8);
  59    popq(rcx);
  60    popq(rdx);
  61    popq(rsi);
  62    popq(rdi);
  63    if (thread != rax) {
  64        movq(thread, rax);
  65        popq(rax);
  66    }
  67 }
  68 
  69 // NOTE: since the linux kernel resides at the low end of
  70 // user address space, no null pointer check is needed.
  71 bool MacroAssembler::needs_explicit_null_check(int offset) {






  72   return offset < 0 || offset >= 0x100000;
  73 }


  51    movl(rdi, ThreadLocalStorage::thread_index());
  52    call(RuntimeAddress(CAST_FROM_FN_PTR(address, pthread_getspecific)));
  53 
  54    popq(r11);
  55    popq(rsp);
  56    popq(r10);
  57    popq(r9);
  58    popq(r8);
  59    popq(rcx);
  60    popq(rdx);
  61    popq(rsi);
  62    popq(rdi);
  63    if (thread != rax) {
  64        movq(thread, rax);
  65        popq(rax);
  66    }
  67 }
  68 
  69 // NOTE: since the linux kernel resides at the low end of
  70 // user address space, no null pointer check is needed.
  71 bool MacroAssembler::needs_explicit_null_check(intptr_t offset) {
  72   if (UseCompressedOops) {
  73     uintptr_t heap_base = (uintptr_t)Universe::heap_base();
  74     if ((uintptr_t)offset >= heap_base) {
  75       offset = (intptr_t)(pointer_delta((void*)offset, (void*)heap_base, 1));
  76     }
  77   }
  78   return offset < 0 || offset >= 0x100000;
  79 }
src/os_cpu/linux_x86/vm/assembler_linux_x86_64.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File