diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/include/env.h | 2 | ||||
| -rw-r--r-- | src/tools/env.c | 11 |
2 files changed, 5 insertions, 8 deletions
diff --git a/src/include/env.h b/src/include/env.h index 6e0df8c1..4f5f8368 100644 --- a/src/include/env.h +++ b/src/include/env.h @@ -126,7 +126,7 @@ extern char* ftrace_name; BOOLEAN(BOX64_X11SYNC, x11sync, 0, 0) \ BOOLEAN(BOX64_X11THREADS, x11threads, 0, 0) \ BOOLEAN(BOX64_X87_NO80BITS, x87_no80bits, 0, 1) \ - BOOLEAN(BOX64_DYNACACHE, dynacache, 0, 0) \ + INTEGER(BOX64_DYNACACHE, dynacache, 2, 0, 2, 0) \ STRING(BOX64_DYNACACHE_FOLDER, dynacache_folder, 0) \ INTEGER(BOX64_DYNACACHE_MIN, dynacache_min, 350, 0, 10240, 0) \ diff --git a/src/tools/env.c b/src/tools/env.c index 70091eb3..6727d830 100644 --- a/src/tools/env.c +++ b/src/tools/env.c @@ -920,9 +920,9 @@ void SerializeMmaplist(mapping_t* mapping) { if(!DYNAREC_VERSION) return; - if(!box64env.dynacache) + if(mapping->env && mapping->env->is_dynacache_overridden && (mapping->env->dynacache!=1)) return; - if(mapping->env && mapping->env->is_dynacache_overridden && !mapping->env->dynacache) + if((!mapping->env || !mapping->env->is_dynacache_overridden) && box64env.dynacache!=1) return; const char* folder = GetDynacacheFolder(mapping); if(!folder) return; // no folder, no serialize... @@ -1236,10 +1236,7 @@ void MmapDynaCache(mapping_t* mapping) { if(!DYNAREC_VERSION) return; - if(!box64env.dynacache) - return; - if(mapping->env && mapping->env->is_dynacache_overridden && !mapping->env->dynacache) - return; + // no need to test dynacache enabled or not, it has already been done before this call const char* folder = GetDynacacheFolder(mapping); if(!folder) return; const char* name = GetMmaplistName(mapping); @@ -1373,7 +1370,7 @@ int IsAddrNeedReloc(uintptr_t addr) box64env_t* env = GetCurEnvByAddr(addr); // TODO: this seems quite wrong and should be refactored int test = env->is_dynacache_overridden?env->dynacache:box64env.dynacache; - if(!test) + if(test!=1) return 0; uintptr_t end = env->nodynarec_end?env->nodynarec_end:box64env.nodynarec_end; uintptr_t start = env->nodynarec_start?env->nodynarec_start:box64env.nodynarec_start; |