| // Copyright 2020 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "src/execution/local-isolate.h" |
| |
| #include "src/execution/isolate.h" |
| #include "src/execution/thread-id.h" |
| #include "src/handles/handles-inl.h" |
| #include "src/logging/local-logger.h" |
| |
| namespace v8 { |
| namespace internal { |
| |
| LocalIsolate::LocalIsolate(Isolate* isolate, ThreadKind kind) |
| : HiddenLocalFactory(isolate), |
| heap_(isolate->heap(), kind), |
| isolate_(isolate), |
| logger_(new LocalLogger(isolate)), |
| thread_id_(ThreadId::Current()), |
| stack_limit_(kind == ThreadKind::kMain |
| ? isolate->stack_guard()->real_climit() |
| : GetCurrentStackPosition() - FLAG_stack_size * KB) {} |
| |
| LocalIsolate::~LocalIsolate() = default; |
| |
| int LocalIsolate::GetNextScriptId() { return isolate_->GetNextScriptId(); } |
| |
| #if V8_SFI_HAS_UNIQUE_ID |
| int LocalIsolate::GetNextUniqueSharedFunctionInfoId() { |
| return isolate_->GetNextUniqueSharedFunctionInfoId(); |
| } |
| #endif // V8_SFI_HAS_UNIQUE_ID |
| |
| bool LocalIsolate::is_collecting_type_profile() const { |
| // TODO(leszeks): Figure out if it makes sense to check this asynchronously. |
| return isolate_->is_collecting_type_profile(); |
| } |
| |
| // static |
| bool StackLimitCheck::HasOverflowed(LocalIsolate* local_isolate) { |
| return GetCurrentStackPosition() < local_isolate->stack_limit(); |
| } |
| |
| } // namespace internal |
| } // namespace v8 |