diff options
author | Jiyoung Yun <jy910.yun@samsung.com> | 2016-11-23 19:09:09 +0900 |
---|---|---|
committer | Jiyoung Yun <jy910.yun@samsung.com> | 2016-11-23 19:09:09 +0900 |
commit | 4b4aad7217d3292650e77eec2cf4c198ea9c3b4b (patch) | |
tree | 98110734c91668dfdbb126fcc0e15ddbd93738ca /src/ToolBox/superpmi/superpmi-shim-collector/jithost.cpp | |
parent | fa45f57ed55137c75ac870356a1b8f76c84b229c (diff) | |
download | coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.gz coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.bz2 coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.zip |
Imported Upstream version 1.1.0upstream/1.1.0
Diffstat (limited to 'src/ToolBox/superpmi/superpmi-shim-collector/jithost.cpp')
-rw-r--r-- | src/ToolBox/superpmi/superpmi-shim-collector/jithost.cpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/ToolBox/superpmi/superpmi-shim-collector/jithost.cpp b/src/ToolBox/superpmi/superpmi-shim-collector/jithost.cpp new file mode 100644 index 0000000000..5e63a76be7 --- /dev/null +++ b/src/ToolBox/superpmi/superpmi-shim-collector/jithost.cpp @@ -0,0 +1,64 @@ +// +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// + +#include "standardpch.h" +#include "runtimedetails.h" +#include "spmiutil.h" +#include "jithost.h" + +JitHost* g_ourJitHost; + +JitHost::JitHost(ICorJitHost* wrappedHost, MethodContext* methodContext) : wrappedHost(wrappedHost), mc(methodContext) +{ +} + +void JitHost::setMethodContext(MethodContext* methodContext) +{ + this->mc = methodContext; +} + +void* JitHost::allocateMemory(size_t size, bool usePageAllocator) +{ + return wrappedHost->allocateMemory(size, usePageAllocator); +} + +void JitHost::freeMemory(void* block, bool usePageAllocator) +{ + return wrappedHost->freeMemory(block, usePageAllocator); +} + +int JitHost::getIntConfigValue(const wchar_t* key, int defaultValue) +{ + mc->cr->AddCall("getIntConfigValue"); + int result = wrappedHost->getIntConfigValue(key, defaultValue); + + // The JIT eagerly asks about every config value. If we store all these + // queries, it takes almost half the MC file space. So only store the + // non-default answers. + if (result != defaultValue) + { + mc->recGetIntConfigValue(key, defaultValue, result); + } + return result; +} + +const wchar_t* JitHost::getStringConfigValue(const wchar_t* key) +{ + mc->cr->AddCall("getStringConfigValue"); + const wchar_t *result = wrappedHost->getStringConfigValue(key); + + // Don't store null returns, which is the default + if (result != nullptr) + { + mc->recGetStringConfigValue(key, result); + } + return result; +} + +void JitHost::freeStringConfigValue(const wchar_t* value) +{ + mc->cr->AddCall("freeStringConfigValue"); + wrappedHost->freeStringConfigValue(value); +} |