equal
deleted
inserted
replaced
2215 // |
2215 // |
2216 // Check for implicit null |
2216 // Check for implicit null |
2217 // We only expect null pointers in the stubs (vtable) |
2217 // We only expect null pointers in the stubs (vtable) |
2218 // the rest are checked explicitly now. |
2218 // the rest are checked explicitly now. |
2219 // |
2219 // |
2220 CodeBlob* cb = CodeCache::find_blob(pc); |
2220 if (((uintptr_t)addr) < os::vm_page_size() ) { |
2221 if (cb != NULL) { |
2221 // an access to the first page of VM--assume it is a null pointer |
2222 if (VtableStubs::stub_containing(pc) != NULL) { |
2222 address stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL); |
2223 if (((uintptr_t)addr) < os::vm_page_size() ) { |
2223 if (stub != NULL) return Handle_Exception(exceptionInfo, stub); |
2224 // an access to the first page of VM--assume it is a null pointer |
|
2225 return Handle_Exception(exceptionInfo, |
|
2226 SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL)); |
|
2227 } |
|
2228 } |
|
2229 } |
2224 } |
2230 } |
2225 } |
2231 } // in_java |
2226 } // in_java |
2232 |
2227 |
2233 // IA64 doesn't use implicit null checking yet. So we shouldn't |
2228 // IA64 doesn't use implicit null checking yet. So we shouldn't |
2239 #else /* !IA64 */ |
2234 #else /* !IA64 */ |
2240 |
2235 |
2241 // Windows 98 reports faulting addresses incorrectly |
2236 // Windows 98 reports faulting addresses incorrectly |
2242 if (!MacroAssembler::needs_explicit_null_check((intptr_t)addr) || |
2237 if (!MacroAssembler::needs_explicit_null_check((intptr_t)addr) || |
2243 !os::win32::is_nt()) { |
2238 !os::win32::is_nt()) { |
2244 |
2239 address stub = SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL); |
2245 return Handle_Exception(exceptionInfo, |
2240 if (stub != NULL) return Handle_Exception(exceptionInfo, stub); |
2246 SharedRuntime::continuation_for_implicit_exception(thread, pc, SharedRuntime::IMPLICIT_NULL)); |
|
2247 } |
2241 } |
2248 report_error(t, exception_code, pc, exceptionInfo->ExceptionRecord, |
2242 report_error(t, exception_code, pc, exceptionInfo->ExceptionRecord, |
2249 exceptionInfo->ContextRecord); |
2243 exceptionInfo->ContextRecord); |
2250 return EXCEPTION_CONTINUE_SEARCH; |
2244 return EXCEPTION_CONTINUE_SEARCH; |
2251 #endif |
2245 #endif |