Bug 1290317 - Switch the SharedImmutableStringsCache jsapi-test over to js::Thread instead of PRThread; r=terrence

This commit is contained in:
Nick Fitzgerald 2016-08-01 09:45:31 -07:00
parent 05196a8f61
commit a866a6dfb4

View File

@ -8,7 +8,7 @@
#include "js/Vector.h" #include "js/Vector.h"
#include "jsapi-tests/tests.h" #include "jsapi-tests/tests.h"
#include "threading/Thread.h"
#include "vm/SharedImmutableStringsCache.h" #include "vm/SharedImmutableStringsCache.h"
const int NUM_THREADS = 256; const int NUM_THREADS = 256;
@ -34,10 +34,8 @@ struct CacheAndIndex
}; };
static void static void
getString(void* data) getString(CacheAndIndex* cacheAndIndex)
{ {
auto cacheAndIndex = reinterpret_cast<CacheAndIndex*>(data);
for (int i = 0; i < NUM_ITERATIONS; i++) { for (int i = 0; i < NUM_ITERATIONS; i++) {
auto str = STRINGS[cacheAndIndex->index % NUM_STRINGS]; auto str = STRINGS[cacheAndIndex->index % NUM_STRINGS];
@ -64,25 +62,17 @@ BEGIN_TEST(testSharedImmutableStringsCache)
CHECK(maybeCache.isSome()); CHECK(maybeCache.isSome());
auto& cache = *maybeCache; auto& cache = *maybeCache;
js::Vector<PRThread*> threads(cx); js::Vector<js::Thread> threads(cx);
CHECK(threads.reserve(NUM_THREADS)); CHECK(threads.reserve(NUM_THREADS));
for (auto i : mozilla::MakeRange(NUM_THREADS)) { for (auto i : mozilla::MakeRange(NUM_THREADS)) {
auto cacheAndIndex = js_new<CacheAndIndex>(&cache, i); auto cacheAndIndex = js_new<CacheAndIndex>(&cache, i);
CHECK(cacheAndIndex); CHECK(cacheAndIndex);
auto thread = PR_CreateThread(PR_USER_THREAD, threads.infallibleEmplaceBack(getString, cacheAndIndex);
getString,
(void *) cacheAndIndex,
PR_PRIORITY_NORMAL,
PR_LOCAL_THREAD,
PR_JOINABLE_THREAD,
0);
CHECK(thread);
threads.infallibleAppend(thread);
} }
for (auto thread : threads) for (auto& thread : threads)
CHECK(PR_JoinThread(thread) == PR_SUCCESS); thread.join();
return true; return true;
} }