src/os/windows/vm/os_windows.cpp

changeset 900
dc16daa0329d
parent 824
ee21eaa8ffe1
child 902
8724fb00c422
     1.1 --- a/src/os/windows/vm/os_windows.cpp	Fri Oct 31 10:34:20 2008 -0700
     1.2 +++ b/src/os/windows/vm/os_windows.cpp	Thu Dec 04 17:29:56 2008 -0800
     1.3 @@ -2217,15 +2217,10 @@
     1.4                  // We only expect null pointers in the stubs (vtable)
     1.5                  // the rest are checked explicitly now.
     1.6                  //
     1.7 -                CodeBlob* cb = CodeCache::find_blob(pc);
     1.8 -                if (cb != NULL) {
     1.9 -                  if (VtableStubs::stub_containing(pc) != NULL) {
    1.10 -                    if (((uintptr_t)addr) < os::vm_page_size() ) {
    1.11 -                      // an access to the first page of VM--assume it is a null pointer
    1.12 -                      return Handle_Exception(exceptionInfo,
    1.13 -                        SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL));
    1.14 -                    }
    1.15 -                  }
    1.16 +                if (((uintptr_t)addr) < os::vm_page_size() ) {
    1.17 +                  // an access to the first page of VM--assume it is a null pointer
    1.18 +                  address stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);
    1.19 +                  if (stub != NULL) return Handle_Exception(exceptionInfo, stub);
    1.20                  }
    1.21                }
    1.22              } // in_java
    1.23 @@ -2241,9 +2236,8 @@
    1.24              // Windows 98 reports faulting addresses incorrectly
    1.25              if (!MacroAssembler::needs_explicit_null_check((intptr_t)addr) ||
    1.26                  !os::win32::is_nt()) {
    1.27 -
    1.28 -              return Handle_Exception(exceptionInfo,
    1.29 -                  SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL));
    1.30 +              address stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL);
    1.31 +              if (stub != NULL) return Handle_Exception(exceptionInfo, stub);
    1.32              }
    1.33              report_error(t, exception_code, pc, exceptionInfo->ExceptionRecord,
    1.34                           exceptionInfo->ContextRecord);

mercurial