|
|
@@ -4081,6 +4081,25 @@ void DumpRecyclerObjectGraph()
|
|
|
#endif
|
|
|
|
|
|
#if ENABLE_NATIVE_CODEGEN
|
|
|
+bool ThreadContext::IsNativeAddressHelper(void * pCodeAddr, Js::ScriptContext* currentScriptContext)
|
|
|
+{
|
|
|
+ bool isNativeAddr = false;
|
|
|
+ if (currentScriptContext && currentScriptContext->GetJitFuncRangeCache() != nullptr)
|
|
|
+ {
|
|
|
+ isNativeAddr = currentScriptContext->GetJitFuncRangeCache()->IsNativeAddr(pCodeAddr);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (Js::ScriptContext *scriptContext = scriptContextList; scriptContext && !isNativeAddr; scriptContext = scriptContext->next)
|
|
|
+ {
|
|
|
+ if (scriptContext == currentScriptContext || scriptContext->GetJitFuncRangeCache() == nullptr)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ isNativeAddr = scriptContext->GetJitFuncRangeCache()->IsNativeAddr(pCodeAddr);
|
|
|
+ }
|
|
|
+ return isNativeAddr;
|
|
|
+}
|
|
|
+
|
|
|
BOOL ThreadContext::IsNativeAddress(void * pCodeAddr, Js::ScriptContext* currentScriptContext)
|
|
|
{
|
|
|
#if ENABLE_OOP_NATIVE_CODEGEN
|
|
|
@@ -4104,24 +4123,9 @@ BOOL ThreadContext::IsNativeAddress(void * pCodeAddr, Js::ScriptContext* current
|
|
|
HRESULT hr = JITManager::GetJITManager()->IsNativeAddr(this->m_remoteThreadContextInfo, (intptr_t)pCodeAddr, &result);
|
|
|
JITManager::HandleServerCallResult(hr, RemoteCallType::HeapQuery);
|
|
|
#endif
|
|
|
-
|
|
|
- bool isNativeAddr = false;
|
|
|
- if (currentScriptContext && currentScriptContext->GetJitFuncRangeCache() != nullptr)
|
|
|
- {
|
|
|
- isNativeAddr = currentScriptContext->GetJitFuncRangeCache()->IsNativeAddr(pCodeAddr);
|
|
|
- }
|
|
|
-
|
|
|
- for (Js::ScriptContext *scriptContext = scriptContextList; scriptContext && !isNativeAddr; scriptContext = scriptContext->next)
|
|
|
- {
|
|
|
- if (scriptContext->GetJitFuncRangeCache() == nullptr || scriptContext == currentScriptContext)
|
|
|
- {
|
|
|
- continue;
|
|
|
- }
|
|
|
- isNativeAddr = scriptContext->GetJitFuncRangeCache()->IsNativeAddr(pCodeAddr);
|
|
|
- }
|
|
|
-
|
|
|
+ bool isNativeAddr = IsNativeAddressHelper(pCodeAddr, currentScriptContext);
|
|
|
#if DBG
|
|
|
- Assert(result == (isNativeAddr? 1:0));
|
|
|
+ Assert(result == (isNativeAddr? TRUE:FALSE));
|
|
|
#endif
|
|
|
return isNativeAddr;
|
|
|
}
|
|
|
@@ -4139,17 +4143,7 @@ BOOL ThreadContext::IsNativeAddress(void * pCodeAddr, Js::ScriptContext* current
|
|
|
#if DBG
|
|
|
AutoCriticalSection autoLock(&this->codePageAllocators.cs);
|
|
|
#endif
|
|
|
-
|
|
|
- bool isNativeAddr = false;
|
|
|
- for (Js::ScriptContext *scriptContext = scriptContextList; scriptContext && !isNativeAddr; scriptContext = scriptContext->next)
|
|
|
- {
|
|
|
- if (scriptContext->GetJitFuncRangeCache() == nullptr)
|
|
|
- {
|
|
|
- continue;
|
|
|
- }
|
|
|
- isNativeAddr = scriptContext->GetJitFuncRangeCache()->IsNativeAddr(pCodeAddr);
|
|
|
- }
|
|
|
-
|
|
|
+ bool isNativeAddr = IsNativeAddressHelper(pCodeAddr, currentScriptContext);
|
|
|
#if DBG
|
|
|
Assert(this->codePageAllocators.IsInNonPreReservedPageAllocator(pCodeAddr) == isNativeAddr);
|
|
|
#endif
|