| Index: test/cctest/test-api.cc
|
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
|
| index fc0281a0bdf6f3375db2d1627d4fb4a661ac548a..c01ad143005f3e98d39adbc7b2d35f8b73382bb2 100644
|
| --- a/test/cctest/test-api.cc
|
| +++ b/test/cctest/test-api.cc
|
| @@ -15400,7 +15400,7 @@ TEST(CompileExternalTwoByteSource) {
|
| #ifndef V8_INTERPRETED_REGEXP
|
|
|
| struct RegExpInterruptionData {
|
| - int loop_count;
|
| + v8::base::Atomic32 loop_count;
|
| UC16VectorResource* string_resource;
|
| v8::Persistent<v8::String> string;
|
| } regexp_interruption_data;
|
| @@ -15412,9 +15412,10 @@ class RegExpInterruptionThread : public v8::base::Thread {
|
| : Thread(Options("TimeoutThread")), isolate_(isolate) {}
|
|
|
| virtual void Run() {
|
| - for (regexp_interruption_data.loop_count = 0;
|
| - regexp_interruption_data.loop_count < 7;
|
| - regexp_interruption_data.loop_count++) {
|
| + for (v8::base::NoBarrier_Store(®exp_interruption_data.loop_count, 0);
|
| + v8::base::NoBarrier_Load(®exp_interruption_data.loop_count) < 7;
|
| + v8::base::NoBarrier_AtomicIncrement(
|
| + ®exp_interruption_data.loop_count, 1)) {
|
| v8::base::OS::Sleep(50); // Wait a bit before requesting GC.
|
| reinterpret_cast<i::Isolate*>(isolate_)->stack_guard()->RequestGC();
|
| }
|
| @@ -15428,7 +15429,9 @@ class RegExpInterruptionThread : public v8::base::Thread {
|
|
|
|
|
| void RunBeforeGC(v8::GCType type, v8::GCCallbackFlags flags) {
|
| - if (regexp_interruption_data.loop_count != 2) return;
|
| + if (v8::base::NoBarrier_Load(®exp_interruption_data.loop_count) != 2) {
|
| + return;
|
| + }
|
| v8::HandleScope scope(CcTest::isolate());
|
| v8::Local<v8::String> string = v8::Local<v8::String>::New(
|
| CcTest::isolate(), regexp_interruption_data.string);
|
|
|