v8学习笔记(三) 运行时环境
Context(上下文)運行時環境
1.概述????
???????? 上下文(Context):即運行時環境Runtime(內建(自定義)的對象(函數))
???????? 每個v8::Context含有一個global(全局)ObjectTemplate對象
Context::Scope:表示進入Context
?????????????????? 創建(1)保存頂層i::Context到i::HandleScopeImplementer
??????????????????????????? (2)設置頂層為當前Context
???????? ??? 銷毀:退出Context:恢復頂層i::Context
?
2.運行時環境的建立(v8.cc)
(1)Logger::Setup()
(2)CpuProfiler::Setup()
(3)HeapProfiler::Setup()
(4)OS::Setup()
(5)Heap::Setup()
???????? MemoryAllocator內存分配器
???????? static NewSpace new_space_;
???????? static OldSpace* old_pointer_space_;???
???????? static OldSpace* old_data_space_;????????
???????? static OldSpace* code_space_;???????????????
???????? static MapSpace* map_space_;??????????????
???????? static CellSpace* cell_space_;???????????????????????????
???????? static LargeObjectSpace* lo_space_;????
???????? static HeapState gc_state;
???????? static Object* roots_[kRootListLength];//內建對象(指針)數組---全部內建對象
?
(6)Bootstrapper::Initialize()
(7)Builtins::Setup() :內建函數 (跳轉到內建Code對象的機器指令)
(8)Top::Initialize()
(9)StubCache::Initialize()
(10)CPU::Setup()
(11)OProfileAgent::Initialize()
????????
3.CodeStub對象(用于訪問內建的Code對象)
(1)固定(Fixed)CodeStub
???????? CEntryStub
???????? |?????? CEntry Code:同時存放在roots_[kCEntryCodeRootIndex]和
???????? |????????????????????????????????????????????????????? roots_[kCodeStubsRootIndex]的NumberDictionary對象
???????? JSEntryStub
???????? |?????? JSEntry Code:同時存放在roots_[kJsEntryCodeRootIndex]和
???????? |????????????????????????????????????????????????????? ? roots_[kCodeStubsRootIndex]的NumberDictionary對象
???????? JSConstructEntryStub
?????????????????? JSConstructEntry Code:同時存放在roots_[kJsConstructEntryCodeRootIndex]和?????????????????????????????????? ???????????????????????????????????? ???????? roots_[kCodeStubsRootIndex]的NumberDictionary對象
(2)其他Stub
?
4.Builtins類
???????? static Object* builtins_[];//內建函數的Code對象數組
?
3類內建函數:(1)C++實現
??????????????????????????? (2)匯編實現
??????????????????????????? (3)匯編實現,用于debug
總結
以上是生活随笔為你收集整理的v8学习笔记(三) 运行时环境的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: v8学习笔记(二) Handle和Han
- 下一篇: v8学习笔记(四) 对象机制