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

Side by Side Diff: runtime/vm/isolate.h

Issue 2392613002: Reapply "Lazy deopt without code patching." (Closed)
Patch Set: . Created 4 years, 2 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 | « runtime/vm/intermediate_language_x64.cc ('k') | runtime/vm/isolate.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 (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 #ifndef VM_ISOLATE_H_ 5 #ifndef VM_ISOLATE_H_
6 #define VM_ISOLATE_H_ 6 #define VM_ISOLATE_H_
7 7
8 #include "include/dart_api.h" 8 #include "include/dart_api.h"
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "vm/atomic.h" 10 #include "vm/atomic.h"
11 #include "vm/base_isolate.h" 11 #include "vm/base_isolate.h"
12 #include "vm/class_table.h" 12 #include "vm/class_table.h"
13 #include "vm/handles.h" 13 #include "vm/handles.h"
14 #include "vm/megamorphic_cache_table.h" 14 #include "vm/megamorphic_cache_table.h"
15 #include "vm/metrics.h" 15 #include "vm/metrics.h"
16 #include "vm/random.h" 16 #include "vm/random.h"
17 #include "vm/tags.h" 17 #include "vm/tags.h"
18 #include "vm/thread.h" 18 #include "vm/thread.h"
19 #include "vm/os_thread.h" 19 #include "vm/os_thread.h"
20 #include "vm/timer.h" 20 #include "vm/timer.h"
21 #include "vm/token_position.h" 21 #include "vm/token_position.h"
22 #include "vm/growable_array.h"
22 23
23 namespace dart { 24 namespace dart {
24 25
25 // Forward declarations. 26 // Forward declarations.
26 class ApiState; 27 class ApiState;
27 class BackgroundCompiler; 28 class BackgroundCompiler;
28 class Capability; 29 class Capability;
29 class CodeIndexTable; 30 class CodeIndexTable;
30 class CompilerStats; 31 class CompilerStats;
31 class Debugger; 32 class Debugger;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 class ServiceIdZone; 64 class ServiceIdZone;
64 class Simulator; 65 class Simulator;
65 class StackResource; 66 class StackResource;
66 class StackZone; 67 class StackZone;
67 class StoreBuffer; 68 class StoreBuffer;
68 class StubCode; 69 class StubCode;
69 class ThreadRegistry; 70 class ThreadRegistry;
70 class UserTag; 71 class UserTag;
71 72
72 73
74 class PendingLazyDeopt {
75 public:
76 PendingLazyDeopt(uword fp, uword pc) : fp_(fp), pc_(pc) { }
77 uword fp() { return fp_; }
78 uword pc() { return pc_; }
79 void set_pc(uword pc) { pc_ = pc; }
80
81 private:
82 uword fp_;
83 uword pc_;
84 };
85
86
73 class IsolateVisitor { 87 class IsolateVisitor {
74 public: 88 public:
75 IsolateVisitor() {} 89 IsolateVisitor() {}
76 virtual ~IsolateVisitor() {} 90 virtual ~IsolateVisitor() {}
77 91
78 virtual void VisitIsolate(Isolate* isolate) = 0; 92 virtual void VisitIsolate(Isolate* isolate) = 0;
79 93
80 private: 94 private:
81 DISALLOW_COPY_AND_ASSIGN(IsolateVisitor); 95 DISALLOW_COPY_AND_ASSIGN(IsolateVisitor);
82 }; 96 };
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 return shutdown_callback_; 397 return shutdown_callback_;
384 } 398 }
385 399
386 void set_object_id_ring(ObjectIdRing* ring) { 400 void set_object_id_ring(ObjectIdRing* ring) {
387 object_id_ring_ = ring; 401 object_id_ring_ = ring;
388 } 402 }
389 ObjectIdRing* object_id_ring() { 403 ObjectIdRing* object_id_ring() {
390 return object_id_ring_; 404 return object_id_ring_;
391 } 405 }
392 406
407 MallocGrowableArray<PendingLazyDeopt>* pending_deopts() {
408 return pending_deopts_;
409 }
393 bool IsDeoptimizing() const { return deopt_context_ != NULL; } 410 bool IsDeoptimizing() const { return deopt_context_ != NULL; }
394 DeoptContext* deopt_context() const { return deopt_context_; } 411 DeoptContext* deopt_context() const { return deopt_context_; }
395 void set_deopt_context(DeoptContext* value) { 412 void set_deopt_context(DeoptContext* value) {
396 ASSERT(value == NULL || deopt_context_ == NULL); 413 ASSERT(value == NULL || deopt_context_ == NULL);
397 deopt_context_ = value; 414 deopt_context_ = value;
398 } 415 }
399 416
400 BackgroundCompiler* background_compiler() const { 417 BackgroundCompiler* background_compiler() const {
401 return background_compiler_; 418 return background_compiler_;
402 } 419 }
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 Mutex* symbols_mutex_; // Protects concurrent access to the symbol table. 750 Mutex* symbols_mutex_; // Protects concurrent access to the symbol table.
734 Mutex* type_canonicalization_mutex_; // Protects type canonicalization. 751 Mutex* type_canonicalization_mutex_; // Protects type canonicalization.
735 Mutex* constant_canonicalization_mutex_; // Protects const canonicalization. 752 Mutex* constant_canonicalization_mutex_; // Protects const canonicalization.
736 Mutex* megamorphic_lookup_mutex_; // Protects megamorphic table lookup. 753 Mutex* megamorphic_lookup_mutex_; // Protects megamorphic table lookup.
737 MessageHandler* message_handler_; 754 MessageHandler* message_handler_;
738 IsolateSpawnState* spawn_state_; 755 IsolateSpawnState* spawn_state_;
739 bool is_runnable_; 756 bool is_runnable_;
740 Dart_GcPrologueCallback gc_prologue_callback_; 757 Dart_GcPrologueCallback gc_prologue_callback_;
741 Dart_GcEpilogueCallback gc_epilogue_callback_; 758 Dart_GcEpilogueCallback gc_epilogue_callback_;
742 intptr_t defer_finalization_count_; 759 intptr_t defer_finalization_count_;
760 MallocGrowableArray<PendingLazyDeopt>* pending_deopts_;
743 DeoptContext* deopt_context_; 761 DeoptContext* deopt_context_;
744 762
745 bool is_service_isolate_; 763 bool is_service_isolate_;
746 764
747 // Isolate-specific flags. 765 // Isolate-specific flags.
748 NOT_IN_PRODUCT( 766 NOT_IN_PRODUCT(
749 bool type_checks_; 767 bool type_checks_;
750 bool asserts_; 768 bool asserts_;
751 bool error_on_bad_type_; 769 bool error_on_bad_type_;
752 bool error_on_bad_override_; 770 bool error_on_bad_override_;
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
990 intptr_t* spawn_count_; 1008 intptr_t* spawn_count_;
991 1009
992 Dart_IsolateFlags isolate_flags_; 1010 Dart_IsolateFlags isolate_flags_;
993 bool paused_; 1011 bool paused_;
994 bool errors_are_fatal_; 1012 bool errors_are_fatal_;
995 }; 1013 };
996 1014
997 } // namespace dart 1015 } // namespace dart
998 1016
999 #endif // VM_ISOLATE_H_ 1017 #endif // VM_ISOLATE_H_
OLDNEW
« no previous file with comments | « runtime/vm/intermediate_language_x64.cc ('k') | runtime/vm/isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698