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

Side by Side Diff: src/v8threads.cc

Issue 23549011: remove Isolate::Current from most files starting with 's' through 'v' (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 3 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 | Annotate | Revision Log
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 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 ASSERT(!isolate_->thread_manager()->IsLockedByCurrentThread()); 137 ASSERT(!isolate_->thread_manager()->IsLockedByCurrentThread());
138 isolate_->thread_manager()->Lock(); 138 isolate_->thread_manager()->Lock();
139 isolate_->thread_manager()->RestoreThread(); 139 isolate_->thread_manager()->RestoreThread();
140 if (isolate_->IsDefaultIsolate()) { 140 if (isolate_->IsDefaultIsolate()) {
141 isolate_->Enter(); 141 isolate_->Enter();
142 } 142 }
143 } 143 }
144 144
145 145
146 void Locker::StartPreemption(int every_n_ms) { 146 void Locker::StartPreemption(int every_n_ms) {
147 v8::internal::ContextSwitcher::StartPreemption(every_n_ms); 147 v8::internal::ContextSwitcher::StartPreemption(
148 i::Isolate::Current(), every_n_ms);
Sven Panne 2013/09/03 11:38:56 Hmmm, we'll have to think about these: The Locker
148 } 149 }
149 150
150 151
151 void Locker::StopPreemption() { 152 void Locker::StopPreemption() {
152 v8::internal::ContextSwitcher::StopPreemption(); 153 v8::internal::ContextSwitcher::StopPreemption(i::Isolate::Current());
153 } 154 }
154 155
155 156
156 namespace internal { 157 namespace internal {
157 158
158 159
159 bool ThreadManager::RestoreThread() { 160 bool ThreadManager::RestoreThread() {
160 ASSERT(IsLockedByCurrentThread()); 161 ASSERT(IsLockedByCurrentThread());
161 // First check whether the current thread has been 'lazily archived', i.e. 162 // First check whether the current thread has been 'lazily archived', i.e.
162 // not archived at all. If that is the case we put the state storage we 163 // not archived at all. If that is the case we put the state storage we
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 ContextSwitcher::ContextSwitcher(Isolate* isolate, int every_n_ms) 431 ContextSwitcher::ContextSwitcher(Isolate* isolate, int every_n_ms)
431 : Thread("v8:CtxtSwitcher"), 432 : Thread("v8:CtxtSwitcher"),
432 keep_going_(true), 433 keep_going_(true),
433 sleep_ms_(every_n_ms), 434 sleep_ms_(every_n_ms),
434 isolate_(isolate) { 435 isolate_(isolate) {
435 } 436 }
436 437
437 438
438 // Set the scheduling interval of V8 threads. This function starts the 439 // Set the scheduling interval of V8 threads. This function starts the
439 // ContextSwitcher thread if needed. 440 // ContextSwitcher thread if needed.
440 void ContextSwitcher::StartPreemption(int every_n_ms) { 441 void ContextSwitcher::StartPreemption(Isolate* isolate, int every_n_ms) {
441 Isolate* isolate = Isolate::Current();
442 ASSERT(Locker::IsLocked(reinterpret_cast<v8::Isolate*>(isolate))); 442 ASSERT(Locker::IsLocked(reinterpret_cast<v8::Isolate*>(isolate)));
443 if (isolate->context_switcher() == NULL) { 443 if (isolate->context_switcher() == NULL) {
444 // If the ContextSwitcher thread is not running at the moment start it now. 444 // If the ContextSwitcher thread is not running at the moment start it now.
445 isolate->set_context_switcher(new ContextSwitcher(isolate, every_n_ms)); 445 isolate->set_context_switcher(new ContextSwitcher(isolate, every_n_ms));
446 isolate->context_switcher()->Start(); 446 isolate->context_switcher()->Start();
447 } else { 447 } else {
448 // ContextSwitcher thread is already running, so we just change the 448 // ContextSwitcher thread is already running, so we just change the
449 // scheduling interval. 449 // scheduling interval.
450 isolate->context_switcher()->sleep_ms_ = every_n_ms; 450 isolate->context_switcher()->sleep_ms_ = every_n_ms;
451 } 451 }
452 } 452 }
453 453
454 454
455 // Disable preemption of V8 threads. If multiple threads want to use V8 they 455 // Disable preemption of V8 threads. If multiple threads want to use V8 they
456 // must cooperatively schedule amongst them from this point on. 456 // must cooperatively schedule amongst them from this point on.
457 void ContextSwitcher::StopPreemption() { 457 void ContextSwitcher::StopPreemption(Isolate* isolate) {
458 Isolate* isolate = Isolate::Current();
459 ASSERT(Locker::IsLocked(reinterpret_cast<v8::Isolate*>(isolate))); 458 ASSERT(Locker::IsLocked(reinterpret_cast<v8::Isolate*>(isolate)));
460 if (isolate->context_switcher() != NULL) { 459 if (isolate->context_switcher() != NULL) {
461 // The ContextSwitcher thread is running. We need to stop it and release 460 // The ContextSwitcher thread is running. We need to stop it and release
462 // its resources. 461 // its resources.
463 isolate->context_switcher()->keep_going_ = false; 462 isolate->context_switcher()->keep_going_ = false;
464 // Wait for the ContextSwitcher thread to exit. 463 // Wait for the ContextSwitcher thread to exit.
465 isolate->context_switcher()->Join(); 464 isolate->context_switcher()->Join();
466 // Thread has exited, now we can delete it. 465 // Thread has exited, now we can delete it.
467 delete(isolate->context_switcher()); 466 delete(isolate->context_switcher());
468 isolate->set_context_switcher(NULL); 467 isolate->set_context_switcher(NULL);
(...skipping 14 matching lines...) Expand all
483 // Acknowledge the preemption by the receiving thread. 482 // Acknowledge the preemption by the receiving thread.
484 void ContextSwitcher::PreemptionReceived() { 483 void ContextSwitcher::PreemptionReceived() {
485 ASSERT(Locker::IsLocked(i::Isolate::GetDefaultIsolateForLocking())); 484 ASSERT(Locker::IsLocked(i::Isolate::GetDefaultIsolateForLocking()));
486 // There is currently no accounting being done for this. But could be in the 485 // There is currently no accounting being done for this. But could be in the
487 // future, which is why we leave this in. 486 // future, which is why we leave this in.
488 } 487 }
489 488
490 489
491 } // namespace internal 490 } // namespace internal
492 } // namespace v8 491 } // namespace v8
OLDNEW
« src/serialize.h ('K') | « src/v8threads.h ('k') | test/cctest/test-accessors.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698