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

Unified Diff: runtime/vm/isolate.h

Issue 1812753002: - Move (Closed) Base URL: git@github.com:dart-lang/sdk.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 side-by-side diff with in-line comments
Download patch
Index: runtime/vm/isolate.h
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index c6a5bd9d565eecdc514a28b4c6ac9d421849a080..8c0ce7333c047f6e70e1c2e32c6d73a9420af83a 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -229,78 +229,12 @@ class Isolate : public BaseIsolate {
library_tag_handler_ = value;
}
- void SetStackLimit(uword value);
- void SetStackLimitFromStackBase(uword stack_base);
- void ClearStackLimit();
-
- // Returns the current C++ stack pointer. Equivalent taking the address of a
- // stack allocated local, but plays well with AddressSanitizer.
- // TODO(koda): Move to Thread.
- static uword GetCurrentStackPointer();
-
void SetupInstructionsSnapshotPage(
const uint8_t* instructions_snapshot_buffer);
void SetupDataSnapshotPage(
const uint8_t* instructions_snapshot_buffer);
- // Returns true if any of the interrupts specified by 'interrupt_bits' are
- // currently scheduled for this isolate, but leaves them unchanged.
- //
- // NOTE: The read uses relaxed memory ordering, i.e., it is atomic and
- // an interrupt is guaranteed to be observed eventually, but any further
- // order guarantees must be ensured by other synchronization. See the
- // tests in isolate_test.cc for example usage.
- bool HasInterruptsScheduled(uword interrupt_bits) {
- ASSERT(interrupt_bits == (interrupt_bits & kInterruptsMask));
- uword limit = AtomicOperations::LoadRelaxed(&stack_limit_);
- return (limit != saved_stack_limit_) &&
- (((limit & kInterruptsMask) & interrupt_bits) != 0);
- }
-
- // Access to the current stack limit for generated code. This may be
- // overwritten with a special value to trigger interrupts.
- uword stack_limit_address() const {
- return reinterpret_cast<uword>(&stack_limit_);
- }
- static intptr_t stack_limit_offset() {
- return OFFSET_OF(Isolate, stack_limit_);
- }
-
- // The true stack limit for this isolate.
- uword saved_stack_limit() const { return saved_stack_limit_; }
-
- // Stack overflow flags
- enum {
- kOsrRequest = 0x1, // Current stack overflow caused by OSR request.
- };
-
- uword stack_overflow_flags_address() const {
- return reinterpret_cast<uword>(&stack_overflow_flags_);
- }
- static intptr_t stack_overflow_flags_offset() {
- return OFFSET_OF(Isolate, stack_overflow_flags_);
- }
-
- int32_t IncrementAndGetStackOverflowCount() {
- return ++stack_overflow_count_;
- }
-
- // Retrieves and clears the stack overflow flags. These are set by
- // the generated code before the slow path runtime routine for a
- // stack overflow is called.
- uword GetAndClearStackOverflowFlags();
-
- // Interrupt bits.
- enum {
- kVMInterrupt = 0x1, // Internal VM checks: safepoints, store buffers, etc.
- kMessageInterrupt = 0x2, // An interrupt to process an out of band message.
-
- kInterruptsMask = (kVMInterrupt | kMessageInterrupt),
- };
-
- void ScheduleInterrupts(uword interrupt_bits);
- RawError* HandleInterrupts();
- uword GetAndClearInterrupts();
+ void ScheduleMessageInterrupts();
// Marks all libraries as loaded.
void DoneLoading();
@@ -676,7 +610,6 @@ class Isolate : public BaseIsolate {
private:
friend class Dart; // Init, InitOnce, Shutdown.
friend class IsolateKillerVisitor; // Kill().
- friend class NoOOBMessageScope;
explicit Isolate(const Dart_IsolateFlags& api_flags);
@@ -703,9 +636,6 @@ class Isolate : public BaseIsolate {
user_tag_ = tag;
}
- void DeferOOBMessageInterrupts();
- void RestoreOOBMessageInterrupts();
-
RawGrowableObjectArray* GetAndClearPendingServiceExtensionCalls();
RawGrowableObjectArray* pending_service_extension_calls() const {
return pending_service_extension_calls_;
@@ -730,9 +660,6 @@ class Isolate : public BaseIsolate {
}
// Accessed from generated code:
- // TODO(asiva): Need to consider moving the stack_limit_ from isolate to
- // being thread specific.
- uword stack_limit_;
StoreBuffer* store_buffer_;
Heap* heap_;
uword user_tag_;
@@ -766,15 +693,10 @@ class Isolate : public BaseIsolate {
bool has_compiled_code_; // Can check that no compilation occured.
Random random_;
Simulator* simulator_;
- Mutex* mutex_; // Protects stack_limit_, saved_stack_limit_, compiler stats.
+ Mutex* mutex_; // Protects compiler stats.
Mutex* symbols_mutex_; // Protects concurrent access to the symbol table.
Mutex* type_canonicalization_mutex_; // Protects type canonicalization.
Mutex* constant_canonicalization_mutex_; // Protects const canonicalization.
- uword saved_stack_limit_;
- uword deferred_interrupts_mask_;
- uword deferred_interrupts_;
- uword stack_overflow_flags_;
- int32_t stack_overflow_count_;
MessageHandler* message_handler_;
IsolateSpawnState* spawn_state_;
bool is_runnable_;
@@ -907,7 +829,6 @@ REUSABLE_HANDLE_LIST(REUSABLE_FRIEND_DECLARATION)
friend class ServiceIsolate;
friend class Thread;
friend class Timeline;
- friend class IsolateTestHelper;
DISALLOW_COPY_AND_ASSIGN(Isolate);
};
@@ -927,9 +848,9 @@ class StartIsolateScope {
}
if (saved_isolate_ != new_isolate_) {
ASSERT(Isolate::Current() == NULL);
- // Ensure this is not a nested 'isolate enter' with prior state.
- ASSERT(new_isolate_->saved_stack_limit() == 0);
Thread::EnterIsolate(new_isolate_);
+ // Ensure this is not a nested 'isolate enter' with prior state.
+ ASSERT(Thread::Current()->saved_stack_limit() == 0);
}
}
@@ -942,7 +863,7 @@ class StartIsolateScope {
if (saved_isolate_ != new_isolate_) {
ASSERT(saved_isolate_ == NULL);
// ASSERT that we have bottomed out of all Dart invocations.
- ASSERT(new_isolate_->saved_stack_limit() == 0);
+ ASSERT(Thread::Current()->saved_stack_limit() == 0);
Thread::ExitIsolate();
}
}

Powered by Google App Engine
This is Rietveld 408576698