MCPcopy Create free account
hub / github.com/danoon2/Boxedwine / getOrCreateCodePage

Method getOrCreateCodePage

source/emulation/softmmu/kmemory_soft.cpp:233–251  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

231}
232
233CodePage* KMemoryData::getOrCreateCodePage(U32 address) {
234 U32 pageIndex = address >> K_PAGE_SHIFT;
235 PageType type = mmu[pageIndex].getPageType();
236
237 CodePage* codePage = nullptr;
238 if (type == PageType::Code) {
239 codePage = (CodePage*)mmu[pageIndex].getPage();
240 } else if (type == PageType::File) {
241 mmu[pageIndex].getPage()->onDemmand(&mmu[pageIndex], pageIndex);
242 return getOrCreateCodePage(address);
243 } else if (type == PageType::Ram || type == PageType::CopyOnWrite) {
244 mmu[pageIndex].setPageType(memory, pageIndex, PageType::Code);
245 onPageChanged(pageIndex);
246 } else {
247 kpanic_fmt("Unhandled code caching page type: %d", static_cast<int>(mmu[pageIndex].getPageType()));
248 codePage = nullptr;
249 }
250 return codePage;
251}
252#ifdef BOXEDWINE_HOST_EXCEPTIONS
253bool KMemoryData::findOpFromJitAddress(U8* jitAddress, U32& eipOfOp) {
254 auto it = jitAddressToEip.lower_bound(jitAddress);

Callers 1

addCode_nolockMethod · 0.80

Calls 5

kpanic_fmtFunction · 0.85
getPageTypeMethod · 0.80
setPageTypeMethod · 0.80
getPageMethod · 0.45
onDemmandMethod · 0.45

Tested by

no test coverage detected