| Index: src/platform-win32.cc | 
| diff --git a/src/platform-win32.cc b/src/platform-win32.cc | 
| index 52888fe2d472c44834b94028da169c9b6298b6de..b30aa24878d72fc6262aef7f81f7b43ddd827b63 100644 | 
| --- a/src/platform-win32.cc | 
| +++ b/src/platform-win32.cc | 
| @@ -1058,10 +1058,13 @@ TLHELP32_FUNCTION_LIST(DLL_FUNC_LOADED) | 
|  | 
|  | 
| // Load the symbols for generating stack traces. | 
| -static bool LoadSymbols(Isolate* isolate, HANDLE process_handle) { | 
| +static std::vector<OS::SharedLibraryAddress> LoadSymbols( | 
| +    HANDLE process_handle) { | 
| +  static std::vector<OS::SharedLibraryAddress> result; | 
| + | 
| static bool symbols_loaded = false; | 
|  | 
| -  if (symbols_loaded) return true; | 
| +  if (symbols_loaded) return result; | 
|  | 
| BOOL ok; | 
|  | 
| @@ -1069,7 +1072,7 @@ static bool LoadSymbols(Isolate* isolate, HANDLE process_handle) { | 
| ok = _SymInitialize(process_handle,  // hProcess | 
| NULL,            // UserSearchPath | 
| false);          // fInvadeProcess | 
| -  if (!ok) return false; | 
| +  if (!ok) return result; | 
|  | 
| DWORD options = _SymGetOptions(); | 
| options |= SYMOPT_LOAD_LINES; | 
| @@ -1081,13 +1084,13 @@ static bool LoadSymbols(Isolate* isolate, HANDLE process_handle) { | 
| if (!ok) { | 
| int err = GetLastError(); | 
| PrintF("%d\n", err); | 
| -    return false; | 
| +    return result; | 
| } | 
|  | 
| HANDLE snapshot = _CreateToolhelp32Snapshot( | 
| TH32CS_SNAPMODULE,       // dwFlags | 
| GetCurrentProcessId());  // th32ProcessId | 
| -  if (snapshot == INVALID_HANDLE_VALUE) return false; | 
| +  if (snapshot == INVALID_HANDLE_VALUE) return result; | 
| MODULEENTRY32W module_entry; | 
| module_entry.dwSize = sizeof(module_entry);  // Set the size of the structure. | 
| BOOL cont = _Module32FirstW(snapshot, &module_entry); | 
| @@ -1105,31 +1108,37 @@ static bool LoadSymbols(Isolate* isolate, HANDLE process_handle) { | 
| if (base == 0) { | 
| int err = GetLastError(); | 
| if (err != ERROR_MOD_NOT_FOUND && | 
| -          err != ERROR_INVALID_HANDLE) return false; | 
| +          err != ERROR_INVALID_HANDLE) { | 
| +        result.clear(); | 
| +        return result; | 
| +      } | 
| } | 
| -    LOG(isolate, | 
| -        SharedLibraryEvent( | 
| -            module_entry.szExePath, | 
| -            reinterpret_cast<unsigned int>(module_entry.modBaseAddr), | 
| -            reinterpret_cast<unsigned int>(module_entry.modBaseAddr + | 
| -                                           module_entry.modBaseSize))); | 
| +    int lib_name_length = WideCharToMultiByte( | 
| +        CP_UTF8, 0, module_entry.szExePath, -1, NULL, 0, NULL, NULL); | 
| +    std::string lib_name(lib_name_length, 0); | 
| +    WideCharToMultiByte(CP_UTF8, 0, module_entry.szExePath, -1, &lib_name[0], | 
| +                        lib_name_length, NULL, NULL); | 
| +    result.push_back(OS::SharedLibraryAddress( | 
| +        lib_name, reinterpret_cast<unsigned int>(module_entry.modBaseAddr), | 
| +        reinterpret_cast<unsigned int>(module_entry.modBaseAddr + | 
| +                                       module_entry.modBaseSize))); | 
| cont = _Module32NextW(snapshot, &module_entry); | 
| } | 
| CloseHandle(snapshot); | 
|  | 
| symbols_loaded = true; | 
| -  return true; | 
| +  return result; | 
| } | 
|  | 
|  | 
| -void OS::LogSharedLibraryAddresses(Isolate* isolate) { | 
| +std::vector<OS::SharedLibraryAddress> OS::GetSharedLibraryAddresses() { | 
| // SharedLibraryEvents are logged when loading symbol information. | 
| // Only the shared libraries loaded at the time of the call to | 
| -  // LogSharedLibraryAddresses are logged.  DLLs loaded after | 
| +  // GetSharedLibraryAddresses are logged.  DLLs loaded after | 
| // initialization are not accounted for. | 
| -  if (!LoadDbgHelpAndTlHelp32()) return; | 
| +  if (!LoadDbgHelpAndTlHelp32()) return std::vector<OS::SharedLibraryAddress>(); | 
| HANDLE process_handle = GetCurrentProcess(); | 
| -  LoadSymbols(isolate, process_handle); | 
| +  return LoadSymbols(process_handle); | 
| } | 
|  | 
|  | 
| @@ -1150,7 +1159,11 @@ uint64_t OS::TotalPhysicalMemory() { | 
|  | 
|  | 
| #else  // __MINGW32__ | 
| -void OS::LogSharedLibraryAddresses(Isolate* isolate) { } | 
| +std::vector<OS::SharedLibraryAddress> OS::GetSharedLibraryAddresses() { | 
| +  return std::vector<OS::SharedLibraryAddress>(); | 
| +} | 
| + | 
| + | 
| void OS::SignalCodeMovingGC() { } | 
| #endif  // __MINGW32__ | 
|  | 
|  |