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

Side by Side Diff: runtime/vm/isolate_test.cc

Issue 2481873005: clang-format runtime/vm (Closed)
Patch Set: Merge Created 4 years, 1 month 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
« no previous file with comments | « runtime/vm/isolate_reload_test.cc ('k') | runtime/vm/jit_optimizer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "include/dart_api.h" 5 #include "include/dart_api.h"
6 #include "platform/assert.h" 6 #include "platform/assert.h"
7 #include "vm/globals.h" 7 #include "vm/globals.h"
8 #include "vm/isolate.h" 8 #include "vm/isolate.h"
9 #include "vm/lockers.h" 9 #include "vm/lockers.h"
10 #include "vm/thread_barrier.h" 10 #include "vm/thread_barrier.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 Dart_Handle test_lib = TestCase::LoadTestScript(kScriptChars, NULL); 42 Dart_Handle test_lib = TestCase::LoadTestScript(kScriptChars, NULL);
43 43
44 // Setup the internal library's 'internalPrint' function. 44 // Setup the internal library's 'internalPrint' function.
45 // Necessary because asynchronous errors use "print" to print their 45 // Necessary because asynchronous errors use "print" to print their
46 // stack trace. 46 // stack trace.
47 Dart_Handle url = NewString("dart:_internal"); 47 Dart_Handle url = NewString("dart:_internal");
48 DART_CHECK_VALID(url); 48 DART_CHECK_VALID(url);
49 Dart_Handle internal_lib = Dart_LookupLibrary(url); 49 Dart_Handle internal_lib = Dart_LookupLibrary(url);
50 DART_CHECK_VALID(internal_lib); 50 DART_CHECK_VALID(internal_lib);
51 Dart_Handle print = Dart_GetField(test_lib, NewString("_nullPrintClosure")); 51 Dart_Handle print = Dart_GetField(test_lib, NewString("_nullPrintClosure"));
52 Dart_Handle result = Dart_SetField(internal_lib, 52 Dart_Handle result =
53 NewString("_printClosure"), 53 Dart_SetField(internal_lib, NewString("_printClosure"), print);
54 print);
55 54
56 DART_CHECK_VALID(result); 55 DART_CHECK_VALID(result);
57 56
58 // Setup the 'scheduleImmediate' closure. 57 // Setup the 'scheduleImmediate' closure.
59 url = NewString("dart:isolate"); 58 url = NewString("dart:isolate");
60 DART_CHECK_VALID(url); 59 DART_CHECK_VALID(url);
61 Dart_Handle isolate_lib = Dart_LookupLibrary(url); 60 Dart_Handle isolate_lib = Dart_LookupLibrary(url);
62 DART_CHECK_VALID(isolate_lib); 61 DART_CHECK_VALID(isolate_lib);
63 Dart_Handle schedule_immediate_closure = 62 Dart_Handle schedule_immediate_closure = Dart_Invoke(
64 Dart_Invoke(isolate_lib, NewString("_getIsolateScheduleImmediateClosure"), 63 isolate_lib, NewString("_getIsolateScheduleImmediateClosure"), 0, NULL);
65 0, NULL);
66 Dart_Handle args[1]; 64 Dart_Handle args[1];
67 args[0] = schedule_immediate_closure; 65 args[0] = schedule_immediate_closure;
68 url = NewString("dart:async"); 66 url = NewString("dart:async");
69 DART_CHECK_VALID(url); 67 DART_CHECK_VALID(url);
70 Dart_Handle async_lib = Dart_LookupLibrary(url); 68 Dart_Handle async_lib = Dart_LookupLibrary(url);
71 DART_CHECK_VALID(async_lib); 69 DART_CHECK_VALID(async_lib);
72 DART_CHECK_VALID(Dart_Invoke( 70 DART_CHECK_VALID(Dart_Invoke(
73 async_lib, NewString("_setScheduleImmediateClosure"), 1, args)); 71 async_lib, NewString("_setScheduleImmediateClosure"), 1, args));
74 72
75 73
76 result = Dart_Invoke(test_lib, NewString("testMain"), 0, NULL); 74 result = Dart_Invoke(test_lib, NewString("testMain"), 0, NULL);
77 EXPECT_VALID(result); 75 EXPECT_VALID(result);
78 // Run until all ports to isolate are closed. 76 // Run until all ports to isolate are closed.
79 result = Dart_RunLoop(); 77 result = Dart_RunLoop();
80 EXPECT_ERROR(result, "Unsupported operation: Isolate.spawn"); 78 EXPECT_ERROR(result, "Unsupported operation: Isolate.spawn");
81 EXPECT(Dart_ErrorHasException(result)); 79 EXPECT(Dart_ErrorHasException(result));
82 Dart_Handle exception_result = Dart_ErrorGetException(result); 80 Dart_Handle exception_result = Dart_ErrorGetException(result);
83 EXPECT_VALID(exception_result); 81 EXPECT_VALID(exception_result);
84 } 82 }
85 83
86 84
87 class InterruptChecker : public ThreadPool::Task { 85 class InterruptChecker : public ThreadPool::Task {
88 public: 86 public:
89 static const intptr_t kTaskCount; 87 static const intptr_t kTaskCount;
90 static const intptr_t kIterations; 88 static const intptr_t kIterations;
91 89
92 InterruptChecker(Thread* thread, ThreadBarrier* barrier) 90 InterruptChecker(Thread* thread, ThreadBarrier* barrier)
93 : thread_(thread), 91 : thread_(thread), barrier_(barrier) {}
94 barrier_(barrier) {
95 }
96 92
97 virtual void Run() { 93 virtual void Run() {
98 Thread::EnterIsolateAsHelper(thread_->isolate(), Thread::kUnknownTask); 94 Thread::EnterIsolateAsHelper(thread_->isolate(), Thread::kUnknownTask);
99 // Tell main thread that we are ready. 95 // Tell main thread that we are ready.
100 barrier_->Sync(); 96 barrier_->Sync();
101 for (intptr_t i = 0; i < kIterations; ++i) { 97 for (intptr_t i = 0; i < kIterations; ++i) {
102 // Busy wait for interrupts. 98 // Busy wait for interrupts.
103 uword limit = 0; 99 uword limit = 0;
104 do { 100 do {
105 limit = AtomicOperations::LoadRelaxed( 101 limit = AtomicOperations::LoadRelaxed(
106 reinterpret_cast<uword*>(thread_->stack_limit_address())); 102 reinterpret_cast<uword*>(thread_->stack_limit_address()));
107 } while ((limit == thread_->saved_stack_limit_) || 103 } while (
108 (((limit & Thread::kInterruptsMask) & 104 (limit == thread_->saved_stack_limit_) ||
109 Thread::kVMInterrupt) == 0)); 105 (((limit & Thread::kInterruptsMask) & Thread::kVMInterrupt) == 0));
110 // Tell main thread that we observed the interrupt. 106 // Tell main thread that we observed the interrupt.
111 barrier_->Sync(); 107 barrier_->Sync();
112 } 108 }
113 Thread::ExitIsolateAsHelper(); 109 Thread::ExitIsolateAsHelper();
114 barrier_->Exit(); 110 barrier_->Exit();
115 } 111 }
116 112
117 private: 113 private:
118 Thread* thread_; 114 Thread* thread_;
119 ThreadBarrier* barrier_; 115 ThreadBarrier* barrier_;
(...skipping 30 matching lines...) Expand all
150 // Continue with next round. 146 // Continue with next round.
151 uword interrupts = thread->GetAndClearInterrupts(); 147 uword interrupts = thread->GetAndClearInterrupts();
152 EXPECT((interrupts & Thread::kVMInterrupt) != 0); 148 EXPECT((interrupts & Thread::kVMInterrupt) != 0);
153 } 149 }
154 barrier.Exit(); 150 barrier.Exit();
155 } 151 }
156 152
157 153
158 class IsolateTestHelper { 154 class IsolateTestHelper {
159 public: 155 public:
160 static uword GetStackLimit(Thread* thread) { 156 static uword GetStackLimit(Thread* thread) { return thread->stack_limit_; }
161 return thread->stack_limit_;
162 }
163 static uword GetSavedStackLimit(Thread* thread) { 157 static uword GetSavedStackLimit(Thread* thread) {
164 return thread->saved_stack_limit_; 158 return thread->saved_stack_limit_;
165 } 159 }
166 static uword GetDeferredInterruptsMask(Thread* thread) { 160 static uword GetDeferredInterruptsMask(Thread* thread) {
167 return thread->deferred_interrupts_mask_; 161 return thread->deferred_interrupts_mask_;
168 } 162 }
169 static uword GetDeferredInterrupts(Thread* thread) { 163 static uword GetDeferredInterrupts(Thread* thread) {
170 return thread->deferred_interrupts_; 164 return thread->deferred_interrupts_;
171 } 165 }
172 }; 166 };
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 // Restore, then clear interrupts. The world is as it was. 240 // Restore, then clear interrupts. The world is as it was.
247 interrupt_bits = thread->GetAndClearInterrupts(); 241 interrupt_bits = thread->GetAndClearInterrupts();
248 EXPECT_EQ(kMessageInterrupt, interrupt_bits); 242 EXPECT_EQ(kMessageInterrupt, interrupt_bits);
249 EXPECT_EQ(IsolateTestHelper::GetStackLimit(thread), 243 EXPECT_EQ(IsolateTestHelper::GetStackLimit(thread),
250 IsolateTestHelper::GetSavedStackLimit(thread)); 244 IsolateTestHelper::GetSavedStackLimit(thread));
251 EXPECT_EQ(kZero, IsolateTestHelper::GetDeferredInterruptsMask(thread)); 245 EXPECT_EQ(kZero, IsolateTestHelper::GetDeferredInterruptsMask(thread));
252 EXPECT_EQ(kZero, IsolateTestHelper::GetDeferredInterrupts(thread)); 246 EXPECT_EQ(kZero, IsolateTestHelper::GetDeferredInterrupts(thread));
253 } 247 }
254 248
255 } // namespace dart 249 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/isolate_reload_test.cc ('k') | runtime/vm/jit_optimizer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698