src/os_cpu/solaris_x86/vm/assembler_solaris_x86_32.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_32.cpp

Print this page




  63 
  64   pushl(0);                                                             // allocate space for return value
  65   if (thread != rax) pushl(rax);                                        // save rax, if caller still wants it
  66   pushl(rcx);                                                           // save caller save
  67   pushl(rdx);                                                           // save caller save
  68   if (thread != rax) {
  69     leal(thread, Address(rsp, 3 * sizeof(int)));                        // address of return value
  70   } else {
  71     leal(thread, Address(rsp, 2 * sizeof(int)));                        // address of return value
  72   }
  73   pushl(thread);                                                        // and pass the address
  74   pushl(ThreadLocalStorage::thread_index());                            // the key
  75   call(RuntimeAddress(CAST_FROM_FN_PTR(address, thr_getspecific)));
  76   increment(rsp, 2 * wordSize);
  77   popl(rdx);
  78   popl(rcx);
  79   if (thread != rax) popl(rax);
  80   popl(thread);
  81 }
  82 
  83 bool MacroAssembler::needs_explicit_null_check(int offset) {
  84   // Identical to Sparc/Solaris code
  85   bool offset_in_first_page =   0 <= offset  &&  offset < os::vm_page_size();
  86   return !offset_in_first_page;
  87 }


  63 
  64   pushl(0);                                                             // allocate space for return value
  65   if (thread != rax) pushl(rax);                                        // save rax, if caller still wants it
  66   pushl(rcx);                                                           // save caller save
  67   pushl(rdx);                                                           // save caller save
  68   if (thread != rax) {
  69     leal(thread, Address(rsp, 3 * sizeof(int)));                        // address of return value
  70   } else {
  71     leal(thread, Address(rsp, 2 * sizeof(int)));                        // address of return value
  72   }
  73   pushl(thread);                                                        // and pass the address
  74   pushl(ThreadLocalStorage::thread_index());                            // the key
  75   call(RuntimeAddress(CAST_FROM_FN_PTR(address, thr_getspecific)));
  76   increment(rsp, 2 * wordSize);
  77   popl(rdx);
  78   popl(rcx);
  79   if (thread != rax) popl(rax);
  80   popl(thread);
  81 }
  82 
  83 bool MacroAssembler::needs_explicit_null_check(intptr_t offset) {
  84   // Identical to Sparc/Solaris code
  85   bool offset_in_first_page =   0 <= offset  &&  offset < os::vm_page_size();
  86   return !offset_in_first_page;
  87 }
src/os_cpu/solaris_x86/vm/assembler_solaris_x86_32.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File