static BOOL AttachProcess(HANDLE hmod) { if (!ThreadContextTLSEntry::InitializeProcess()) { return FALSE; } g_hInstance = hmod; AutoSystemInfo::SaveModuleFileName(hmod); #if defined(_M_IX86) && !defined(__clang__) // Enable SSE2 math functions in CRT if SSE2 is available #pragma prefast(suppress:6031, "We don't require SSE2, but will use it if available") _set_SSE2_enable(TRUE); #endif #ifdef ENABLE_TEST_HOOKS if (FAILED(OnChakraCoreLoaded())) { return FALSE; } #endif { CmdLineArgsParser parser; ConfigParser::ParseOnModuleLoad(parser, hmod); } #ifdef ENABLE_JS_ETW EtwTrace::Register(); #endif #ifdef VTUNE_PROFILING VTuneChakraProfile::Register(); #endif ValueType::Initialize(); ThreadContext::GlobalInitialize(); // Needed to make sure that only ChakraCore is loaded into the process // This is unnecessary on Linux since there aren't other flavors of // Chakra binaries that can be loaded into the process const char16 *engine = szChakraCoreLock; if (::FindAtom(szChakraLock) != 0) { AssertMsg(FALSE, "Expecting to load chakracore.dll but process already loaded chakra.dll"); Binary_Inconsistency_fatal_error(); } lockedDll = ::AddAtom(engine); AssertMsg(lockedDll, "Failed to lock chakracore.dll"); #ifdef ENABLE_BASIC_TELEMETRY g_TraceLoggingClient = NoCheckHeapNewStruct(TraceLoggingClient); #endif #ifdef DYNAMIC_PROFILE_STORAGE return DynamicProfileStorage::Initialize(); #else return TRUE; #endif }
void FlowreenProcessor::init() { if (flowreenInitialized_ == true) return; flowreenInitialized_ = true; #ifdef VRN_NO_RANDOM srand(0); #endif #if defined(_MSC_VER) && !defined(_WIN64) int i = _set_SSE2_enable(1); if (i != 0) std::cout << "SSE2 enabled.\n"; else std::cout << "SSE2 not enabled; processor does not support SSE2.\n"; #endif }