FRAGMENT(ExecutableAllocator, onepool) { using namespace js::jit; ExecutablePool* pool = nullptr; ExecutableAllocator execAlloc; execAlloc.alloc(cx, 16 * 1024, &pool, CodeKind::Baseline); breakpoint(); use(pool); use(execAlloc); }
static bool enableAssembler(ExecutableAllocator& executableAllocator) { if (!executableAllocator.isValid() || (!Options::useJIT() && !Options::useRegExpJIT())) return false; #if USE(CF) #if COMPILER(GCC) && !COMPILER(CLANG) // FIXME: remove this once the EWS have been upgraded to LLVM. // Work around a bug of GCC with strict-aliasing. RetainPtr<CFStringRef> canUseJITKeyRetain(AdoptCF, CFStringCreateWithCString(0 , "JavaScriptCoreUseJIT", kCFStringEncodingMacRoman)); CFStringRef canUseJITKey = canUseJITKeyRetain.get(); #else CFStringRef canUseJITKey = CFSTR("JavaScriptCoreUseJIT"); #endif // COMPILER(GCC) && !COMPILER(CLANG) RetainPtr<CFBooleanRef> canUseJIT(AdoptCF, (CFBooleanRef)CFPreferencesCopyAppValue(canUseJITKey, kCFPreferencesCurrentApplication)); if (canUseJIT) return kCFBooleanTrue == canUseJIT.get(); #endif #if USE(CF) || OS(UNIX) char* canUseJITString = getenv("JavaScriptCoreUseJIT"); return !canUseJITString || atoi(canUseJITString); #else return true; #endif }
static bool enableAssembler(ExecutableAllocator& executableAllocator) { if (!Options::useJIT() && !Options::useRegExpJIT()) return false; if (!executableAllocator.isValid()) { if (Options::crashIfCantAllocateJITMemory()) CRASH(); return false; } #if USE(CF) CFStringRef canUseJITKey = CFSTR("JavaScriptCoreUseJIT"); RetainPtr<CFTypeRef> canUseJIT = adoptCF(CFPreferencesCopyAppValue(canUseJITKey, kCFPreferencesCurrentApplication)); if (canUseJIT) return kCFBooleanTrue == canUseJIT.get(); #endif #if USE(CF) || OS(UNIX) char* canUseJITString = getenv("JavaScriptCoreUseJIT"); return !canUseJITString || atoi(canUseJITString); #else return true; #endif }
FRAGMENT(ExecutableAllocator, twopools) { using namespace js::jit; ExecutablePool* init = nullptr; ExecutablePool* pool = nullptr; ExecutableAllocator execAlloc; execAlloc.alloc(cx, 16 * 1024, &init, CodeKind::Baseline); do { // Keep allocating until we get a second pool. execAlloc.alloc(cx, 32 * 1024, &pool, CodeKind::Ion); } while (pool == init); breakpoint(); use(execAlloc); }
static bool enableAssembler(ExecutableAllocator& executableAllocator) { if (!Options::useJIT() && !Options::useRegExpJIT()) return false; if (!executableAllocator.isValid()) { if (Options::crashIfCantAllocateJITMemory()) CRASH(); return false; } #if USE(CF) || OS(UNIX) char* canUseJITString = getenv("JavaScriptCoreUseJIT"); return !canUseJITString || atoi(canUseJITString); #else return true; #endif }
static bool enableAssembler(ExecutableAllocator& executableAllocator) { if (!executableAllocator.isValid() || !Options::useJIT()) return false; #if USE(CF) RetainPtr<CFStringRef> canUseJITKey(AdoptCF, CFStringCreateWithCString(0 , "JavaScriptCoreUseJIT", kCFStringEncodingMacRoman)); RetainPtr<CFBooleanRef> canUseJIT(AdoptCF, (CFBooleanRef)CFPreferencesCopyAppValue(canUseJITKey.get(), kCFPreferencesCurrentApplication)); if (canUseJIT) return kCFBooleanTrue == canUseJIT.get(); #endif #if USE(CF) || OS(UNIX) char* canUseJITString = getenv("JavaScriptCoreUseJIT"); return !canUseJITString || atoi(canUseJITString); #else return true; #endif }
static bool enableAssembler(ExecutableAllocator& executableAllocator) { if (!executableAllocator.isValid() || !Options::useJIT) return false; #if USE(CF) CFStringRef canUseJITKey = CFStringCreateWithCString(0 , "JavaScriptCoreUseJIT", kCFStringEncodingMacRoman); CFBooleanRef canUseJIT = (CFBooleanRef)CFPreferencesCopyAppValue(canUseJITKey, kCFPreferencesCurrentApplication); if (canUseJIT) { return kCFBooleanTrue == canUseJIT; CFRelease(canUseJIT); } CFRelease(canUseJITKey); #endif #if USE(CF) || OS(UNIX) char* canUseJITString = getenv("JavaScriptCoreUseJIT"); return !canUseJITString || atoi(canUseJITString); #else return true; #endif }