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

Side by Side Diff: src/api.h

Issue 1762943002: Revert of Introduce v8::MicrotasksScope. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 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
« no previous file with comments | « include/v8.h ('k') | src/api.cc » ('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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_API_H_ 5 #ifndef V8_API_H_
6 #define V8_API_H_ 6 #define V8_API_H_
7 7
8 #include "include/v8-testing.h" 8 #include "include/v8-testing.h"
9 #include "src/contexts.h" 9 #include "src/contexts.h"
10 #include "src/factory.h" 10 #include "src/factory.h"
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 // data. 445 // data.
446 class HandleScopeImplementer { 446 class HandleScopeImplementer {
447 public: 447 public:
448 explicit HandleScopeImplementer(Isolate* isolate) 448 explicit HandleScopeImplementer(Isolate* isolate)
449 : isolate_(isolate), 449 : isolate_(isolate),
450 blocks_(0), 450 blocks_(0),
451 entered_contexts_(0), 451 entered_contexts_(0),
452 saved_contexts_(0), 452 saved_contexts_(0),
453 spare_(NULL), 453 spare_(NULL),
454 call_depth_(0), 454 call_depth_(0),
455 microtasks_depth_(0),
456 microtasks_suppressions_(0),
457 #ifdef V8_ENABLE_CHECKS
458 debug_microtasks_depth_(0),
459 #endif
460 microtasks_policy_(v8::MicrotasksPolicy::kAuto),
461 last_handle_before_deferred_block_(NULL) { } 455 last_handle_before_deferred_block_(NULL) { }
462 456
463 ~HandleScopeImplementer() { 457 ~HandleScopeImplementer() {
464 DeleteArray(spare_); 458 DeleteArray(spare_);
465 } 459 }
466 460
467 // Threading support for handle data. 461 // Threading support for handle data.
468 static int ArchiveSpacePerThread(); 462 static int ArchiveSpacePerThread();
469 char* RestoreThread(char* from); 463 char* RestoreThread(char* from);
470 char* ArchiveThread(char* to); 464 char* ArchiveThread(char* to);
471 void FreeThreadResources(); 465 void FreeThreadResources();
472 466
473 // Garbage collection support. 467 // Garbage collection support.
474 void Iterate(v8::internal::ObjectVisitor* v); 468 void Iterate(v8::internal::ObjectVisitor* v);
475 static char* Iterate(v8::internal::ObjectVisitor* v, char* data); 469 static char* Iterate(v8::internal::ObjectVisitor* v, char* data);
476 470
477 471
478 inline internal::Object** GetSpareOrNewBlock(); 472 inline internal::Object** GetSpareOrNewBlock();
479 inline void DeleteExtensions(internal::Object** prev_limit); 473 inline void DeleteExtensions(internal::Object** prev_limit);
480 474
481 // Call depth represents nested v8 api calls.
482 inline void IncrementCallDepth() {call_depth_++;} 475 inline void IncrementCallDepth() {call_depth_++;}
483 inline void DecrementCallDepth() {call_depth_--;} 476 inline void DecrementCallDepth() {call_depth_--;}
484 inline bool CallDepthIsZero() { return call_depth_ == 0; } 477 inline bool CallDepthIsZero() { return call_depth_ == 0; }
485 478
486 // Microtasks scope depth represents nested scopes controlling microtasks
487 // invocation, which happens when depth reaches zero.
488 inline void IncrementMicrotasksScopeDepth() {microtasks_depth_++;}
489 inline void DecrementMicrotasksScopeDepth() {microtasks_depth_--;}
490 inline int GetMicrotasksScopeDepth() { return microtasks_depth_; }
491
492 // Possibly nested microtasks suppression scopes prevent microtasks
493 // from running.
494 inline void IncrementMicrotasksSuppressions() {microtasks_suppressions_++;}
495 inline void DecrementMicrotasksSuppressions() {microtasks_suppressions_--;}
496 inline bool HasMicrotasksSuppressions() { return !!microtasks_suppressions_; }
497
498 #ifdef V8_ENABLE_CHECKS
499 // In debug we check that calls not intended to invoke microtasks are
500 // still correctly wrapped with microtask scopes.
501 inline void IncrementDebugMicrotasksScopeDepth() {debug_microtasks_depth_++;}
502 inline void DecrementDebugMicrotasksScopeDepth() {debug_microtasks_depth_--;}
503 inline bool DebugMicrotasksScopeDepthIsZero() {
504 return debug_microtasks_depth_ == 0;
505 }
506 #endif
507
508 inline void set_microtasks_policy(v8::MicrotasksPolicy policy);
509 inline v8::MicrotasksPolicy microtasks_policy() const;
510
511 inline void EnterContext(Handle<Context> context); 479 inline void EnterContext(Handle<Context> context);
512 inline void LeaveContext(); 480 inline void LeaveContext();
513 inline bool LastEnteredContextWas(Handle<Context> context); 481 inline bool LastEnteredContextWas(Handle<Context> context);
514 482
515 // Returns the last entered context or an empty handle if no 483 // Returns the last entered context or an empty handle if no
516 // contexts have been entered. 484 // contexts have been entered.
517 inline Handle<Context> LastEnteredContext(); 485 inline Handle<Context> LastEnteredContext();
518 486
519 inline void SaveContext(Context* context); 487 inline void SaveContext(Context* context);
520 inline Context* RestoreContext(); 488 inline Context* RestoreContext();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 DeferredHandles* Detach(Object** prev_limit); 525 DeferredHandles* Detach(Object** prev_limit);
558 526
559 Isolate* isolate_; 527 Isolate* isolate_;
560 List<internal::Object**> blocks_; 528 List<internal::Object**> blocks_;
561 // Used as a stack to keep track of entered contexts. 529 // Used as a stack to keep track of entered contexts.
562 List<Context*> entered_contexts_; 530 List<Context*> entered_contexts_;
563 // Used as a stack to keep track of saved contexts. 531 // Used as a stack to keep track of saved contexts.
564 List<Context*> saved_contexts_; 532 List<Context*> saved_contexts_;
565 Object** spare_; 533 Object** spare_;
566 int call_depth_; 534 int call_depth_;
567 int microtasks_depth_;
568 int microtasks_suppressions_;
569 #ifdef V8_ENABLE_CHECKS
570 int debug_microtasks_depth_;
571 #endif
572 v8::MicrotasksPolicy microtasks_policy_;
573 Object** last_handle_before_deferred_block_; 535 Object** last_handle_before_deferred_block_;
574 // This is only used for threading support. 536 // This is only used for threading support.
575 HandleScopeData handle_scope_data_; 537 HandleScopeData handle_scope_data_;
576 538
577 void IterateThis(ObjectVisitor* v); 539 void IterateThis(ObjectVisitor* v);
578 char* RestoreThreadHelper(char* from); 540 char* RestoreThreadHelper(char* from);
579 char* ArchiveThreadHelper(char* to); 541 char* ArchiveThreadHelper(char* to);
580 542
581 friend class DeferredHandles; 543 friend class DeferredHandles;
582 friend class DeferredHandleScope; 544 friend class DeferredHandleScope;
583 545
584 DISALLOW_COPY_AND_ASSIGN(HandleScopeImplementer); 546 DISALLOW_COPY_AND_ASSIGN(HandleScopeImplementer);
585 }; 547 };
586 548
587 549
588 const int kHandleBlockSize = v8::internal::KB - 2; // fit in one page 550 const int kHandleBlockSize = v8::internal::KB - 2; // fit in one page
589 551
590 552
591 void HandleScopeImplementer::set_microtasks_policy(
592 v8::MicrotasksPolicy policy) {
593 microtasks_policy_ = policy;
594 }
595
596
597 v8::MicrotasksPolicy HandleScopeImplementer::microtasks_policy() const {
598 return microtasks_policy_;
599 }
600
601
602 void HandleScopeImplementer::SaveContext(Context* context) { 553 void HandleScopeImplementer::SaveContext(Context* context) {
603 saved_contexts_.Add(context); 554 saved_contexts_.Add(context);
604 } 555 }
605 556
606 557
607 Context* HandleScopeImplementer::RestoreContext() { 558 Context* HandleScopeImplementer::RestoreContext() {
608 return saved_contexts_.RemoveLast(); 559 return saved_contexts_.RemoveLast();
609 } 560 }
610 561
611 562
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 } 641 }
691 642
692 private: 643 private:
693 static v8::Testing::StressType stress_type_; 644 static v8::Testing::StressType stress_type_;
694 }; 645 };
695 646
696 } // namespace internal 647 } // namespace internal
697 } // namespace v8 648 } // namespace v8
698 649
699 #endif // V8_API_H_ 650 #endif // V8_API_H_
OLDNEW
« no previous file with comments | « include/v8.h ('k') | src/api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698