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

Unified Diff: runtime/vm/isolate.cc

Issue 1439483003: - Add an OSThread structure which is the generic TLS structure for all C++ (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: code-review Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/isolate.h ('k') | runtime/vm/log.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/isolate.cc
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index 1a098fa78fa8b2587fea530accbbe10c0d887853..768a6471e07ae90e5d5b81e9709e346a5d71413c 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -766,7 +766,6 @@ Isolate::Isolate(const Dart_IsolateFlags& api_flags)
simulator_(NULL),
mutex_(new Mutex()),
saved_stack_limit_(0),
- stack_base_(0),
stack_overflow_flags_(0),
stack_overflow_count_(0),
message_handler_(NULL),
@@ -798,7 +797,9 @@ Isolate::Isolate(const Dart_IsolateFlags& api_flags)
field_invalidation_gen_(kInvalidGen),
prefix_invalidation_gen_(kInvalidGen) {
flags_.CopyFrom(api_flags);
- Thread::Current()->set_vm_tag(VMTag::kEmbedderTagId);
+ // TODO(asiva): A Thread is not available here, need to figure out
+ // how the vm_tag (kEmbedderTagId) can be set, these tags need to
+ // move to the OSThread structure.
set_user_tag(UserTags::kDefaultUserTag);
}
@@ -987,19 +988,7 @@ void Isolate::BuildName(const char* name_prefix) {
}
-// TODO(5411455): Use flag to override default value and Validate the
-// stack size by querying OS.
-uword Isolate::GetSpecifiedStackSize() {
- ASSERT(Isolate::kStackSizeBuffer < OSThread::GetMaxStackSize());
- uword stack_size = OSThread::GetMaxStackSize() - Isolate::kStackSizeBuffer;
- return stack_size;
-}
-
-
void Isolate::SetStackLimitFromStackBase(uword stack_base) {
- // Set stack base.
- stack_base_ = stack_base;
-
// Set stack limit.
#if defined(USING_SIMULATOR)
// Ignore passed-in native stack top and use Simulator stack top.
@@ -1008,7 +997,7 @@ void Isolate::SetStackLimitFromStackBase(uword stack_base) {
stack_base = sim->StackTop();
// The overflow area is accounted for by the simulator.
#endif
- SetStackLimit(stack_base - GetSpecifiedStackSize());
+ SetStackLimit(stack_base - OSThread::GetSpecifiedStackSize());
}
@@ -1026,19 +1015,6 @@ void Isolate::SetStackLimit(uword limit) {
void Isolate::ClearStackLimit() {
SetStackLimit(~static_cast<uword>(0));
- stack_base_ = 0;
-}
-
-
-bool Isolate::GetProfilerStackBounds(uword* lower, uword* upper) const {
- uword stack_upper = stack_base_;
- if (stack_upper == 0) {
- return false;
- }
- uword stack_lower = stack_upper - GetSpecifiedStackSize();
- *lower = stack_lower;
- *upper = stack_upper;
- return true;
}
@@ -1322,7 +1298,6 @@ bool Isolate::NotifyErrorListeners(const String& msg,
static MessageHandler::MessageStatus RunIsolate(uword parameter) {
Isolate* isolate = reinterpret_cast<Isolate*>(parameter);
IsolateSpawnState* state = NULL;
- Thread* thread = Thread::Current();
{
// TODO(turnidge): Is this locking required here at all anymore?
MutexLocker ml(isolate->mutex());
@@ -1330,6 +1305,7 @@ static MessageHandler::MessageStatus RunIsolate(uword parameter) {
}
{
StartIsolateScope start_scope(isolate);
+ Thread* thread = Thread::Current();
ASSERT(thread->isolate() == isolate);
StackZone zone(thread);
HandleScope handle_scope(thread);
@@ -1432,8 +1408,8 @@ static void ShutdownIsolate(uword parameter) {
{
// Print the error if there is one. This may execute dart code to
// print the exception object, so we need to use a StartIsolateScope.
- Thread* thread = Thread::Current();
StartIsolateScope start_scope(isolate);
+ Thread* thread = Thread::Current();
ASSERT(thread->isolate() == isolate);
StackZone zone(thread);
HandleScope handle_scope(thread);
@@ -1702,8 +1678,6 @@ void Isolate::Shutdown() {
// TODO(5411455): For now just make sure there are no current isolates
// as we are shutting down the isolate.
Thread::ExitIsolate();
- // All threads should have exited by now.
- thread_registry()->CheckNotScheduled(this);
}
« no previous file with comments | « runtime/vm/isolate.h ('k') | runtime/vm/log.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698