Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(702)

Side by Side Diff: test/cctest/test-api.cc

Issue 1208933006: Atomics Futex API (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: reduce test wait time from 1s -> 0.1s Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 26 matching lines...) Expand all
37 #endif 37 #endif
38 38
39 #include "include/v8-util.h" 39 #include "include/v8-util.h"
40 #include "src/api.h" 40 #include "src/api.h"
41 #include "src/arguments.h" 41 #include "src/arguments.h"
42 #include "src/base/platform/platform.h" 42 #include "src/base/platform/platform.h"
43 #include "src/base/smart-pointers.h" 43 #include "src/base/smart-pointers.h"
44 #include "src/compilation-cache.h" 44 #include "src/compilation-cache.h"
45 #include "src/debug.h" 45 #include "src/debug.h"
46 #include "src/execution.h" 46 #include "src/execution.h"
47 #include "src/futex-emulation.h"
47 #include "src/objects.h" 48 #include "src/objects.h"
48 #include "src/parser.h" 49 #include "src/parser.h"
49 #include "src/unicode-inl.h" 50 #include "src/unicode-inl.h"
50 #include "src/utils.h" 51 #include "src/utils.h"
51 #include "src/vm-state.h" 52 #include "src/vm-state.h"
52 53
53 static const bool kLogThreading = false; 54 static const bool kLogThreading = false;
54 55
55 using ::v8::Boolean; 56 using ::v8::Boolean;
56 using ::v8::BooleanObject; 57 using ::v8::BooleanObject;
(...skipping 21784 matching lines...) Expand 10 before | Expand all | Expand 10 after
21841 " fake.age;\n" 21842 " fake.age;\n"
21842 " result = 1;\n" 21843 " result = 1;\n"
21843 " } catch (e) {\n" 21844 " } catch (e) {\n"
21844 " }\n" 21845 " }\n"
21845 " test(d+1);\n" 21846 " test(d+1);\n"
21846 "}\n" 21847 "}\n"
21847 "test(0);\n" 21848 "test(0);\n"
21848 "result;\n", 21849 "result;\n",
21849 0); 21850 0);
21850 } 21851 }
21852
21853 class FutexInterruptionThread : public v8::base::Thread {
21854 public:
21855 explicit FutexInterruptionThread(v8::Isolate* isolate)
21856 : Thread(Options("FutexInterruptionThread")), isolate_(isolate) {}
21857
21858 virtual void Run() {
21859 // Wait a bit before terminating.
21860 v8::base::OS::Sleep(v8::base::TimeDelta::FromMilliseconds(100));
21861 v8::V8::TerminateExecution(isolate_);
21862 }
21863
21864 private:
21865 v8::Isolate* isolate_;
21866 };
Jarin 2015/07/17 12:55:27 Thanks for the test, you are my hero!
binji 2015/07/17 16:29:21 Thanks :)
21867
21868
21869 TEST(FutexInterruption) {
21870 i::FLAG_harmony_sharedarraybuffer = true;
21871 i::FLAG_harmony_atomics = true;
21872 v8::Isolate* isolate = CcTest::isolate();
21873 v8::HandleScope scope(isolate);
21874 LocalContext env;
21875
21876 FutexInterruptionThread timeout_thread(isolate);
21877
21878 v8::TryCatch try_catch(CcTest::isolate());
21879 timeout_thread.Start();
21880
21881 CompileRun(
21882 "var ab = new SharedArrayBuffer(4);"
21883 "var i32a = new Int32Array(ab);"
21884 "Atomics.futexWait(i32a, 0, 0);");
21885 CHECK(try_catch.HasTerminated());
21886 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698