v8學習筆記 三 執行時環境

2021-09-30 05:59:09 字數 2237 閱讀 3533

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()

(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];//

內建物件(指標

)陣列---全部內建物件

(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

執行時環境筆記

編譯原理與實踐 第七章 名詞 活動記錄 activation record 包括引數,狀態資訊,local data,臨時資料 stack frames 儲存在stack上的ar frame pointer 專門用於指向ar的暫存器 argument pointer ap 專門用於指向ar中引數部分...

ios中執行時學習筆記

1.什麼是執行時?1 執行時是一套純c語言的api 純c語言庫 2 編譯器最終都會將oc 轉化 為執行時 clang rewrite objc m 3 利用執行時,可以做很多底層的操作,比如 動態新增物件的成員變數和成員方法 動態交換兩個方法的實現 特別是交換系統自帶的方法 獲得某個類的所有成員方法...

C和指標 學習筆記 第18章 執行時環境

第一步驟是從你的編譯器獲得乙個組合語言 列表。1 測試程式 2 靜態變數和初始化 3 堆疊幀 乙個函式分成三個部分 函式序 函式體 函式跋。4 暫存器變數 5 外部識別符號的長度 6 判斷堆疊幀布局 執行時堆疊儲存了每個函式執行時所需要的資料,包括它的自動變數和返回位址。a.傳遞函式引數 b.函式序...