NVM V8引擎

網(wǎng)絡(luò)部分暫且放一放

還是setup()的下一步

V8 is Google's open source JavaScript engine.

n.nvm = nvm.NewNebulasVM()

type NebulasVMstruct{}

// NewNebulasVM create new NebulasVM

func NewNebulasVM() core.NVM {

return &NebulasVM{}

}

初始化一個VM

if err = n.nvm.CheckV8Run(); err != nil {

logging.CLog().WithFields(logrus.Fields{

"err": err,

}).Fatal("Failed to setup V8.")

}

看一下V8環(huán)境變量是否正確設(shè)置

接下來看一下

文件結(jié)構(gòu)

nf/nvm/

lib ____js庫

lnvm_____沒有用

native_____v8動態(tài)鏈接庫以及星云鏈橋接的c++代碼

test————測試代碼

v8_______js庫和go實現(xiàn)的橋接邏輯

blockchain___blockchain相關(guān)函數(shù)

context____NVM的context

crypto______加密相關(guān)函數(shù)

engine_____NVM接口實現(xiàn)

enginev8____smartcontractengine 接口實現(xiàn)

event___事件相關(guān)函數(shù)

module__模塊相關(guān)函數(shù)

storage____賬戶儲存相關(guān)函數(shù)

types_____類型相關(guān)定義

接下有關(guān)V8的幾個API

isolate context

isolate有完整的V8實例,有完整的堆和棧酿雪。context是一個上下文,js代碼都是在一個context中運行的

https://stackoverflow.com/questions/19383724/what-exactly-is-the-difference-between-v8isolate-and-v8context

上邊有他們的區(qū)別

一個isolate某一時刻只有一個runtime?

包括但不限于一個heap管理器,垃圾回收等

一段時間內(nèi)涩拙,有且只有一個線程能使用此isolate摄杂,不過多個線程可以同時使用多個isolate

單獨的isolate不足以運行腳本,需要一個全局對象。context就是這樣的一個提供全局對象的工具

對于一個給定的isolate不僅可以有多個context,并且這些context可以共享某個對象

handle和handle scope

handle是一個js對象的索引

它指向js對象在v8管理的heap中的位置

handle不存在heap中膝迎,而是存在于stack中。只有一個Handle被釋放后才能從stack中推出胰耗。

有時候需要聲明很多handle限次。未免太麻煩,所以就有了handle scope

template模板

模板(Template)用在定義一個Context下的JS的對象或者函數(shù)柴灯。Funct?ionTemplate將

C++的函數(shù)暴露給JS卖漫。每個Funct?ionTemplate對應(yīng)-?-個0bj?ectTemplate费尽。

Funct?ionTemplate相當(dāng)于0bj?ectTemp?late的構(gòu)造函數(shù)。Template?的示例如下:

創(chuàng)建一個模板實例

v8: :Handle<v8:: objectTemplate> global = v8: :ObjectTemplate: :New();

將我們之前實現(xiàn)的Plus函數(shù)模板懊亡,與JavaScript的plus函數(shù)關(guān)聯(lián)起來依啰,相當(dāng)于其回調(diào)函數(shù)

global->Set(v8: :String: :New("plus"), v8:: FunctionTemplate: :New(Plus));

accessor

一個accessor是c++的一個回調(diào)函數(shù),當(dāng)javascript訪問一個對象屬性時。它被回調(diào)并返回一個值。accessor通過object template來設(shè)置

accessor需要通過一個object template來設(shè)置 使用setAccessor 該方法需要提供一個屬性和關(guān)聯(lián)的兩個回調(diào)作為參數(shù)



type? V8Engine? struct {

ctx? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *Context? ? //context

modules? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Modules? ? ?//模塊

v8engine? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *C.V8Engine? ? //? v8中的V8engine

strictDisallowUsageOfInstructionCounter int? ? //

enableLimits? ? ? ? ? ? ? ? ? ? ? ? ? ? bool

limitsOfExecutionInstructions? ? ? ? ? uint64

limitsOfTotalMemorySize? ? ? ? ? ? ? ? uint64

actualCountOfExecutionInstructions? ? ? uint64

actualTotalMemorySize? ? ? ? ? ? ? ? ? uint64

lcsHandler? ? ? ? ? ? ? ? ? ? ? ? ? ? ? uint64

gcsHandler? ? ? ? ? ? ? ? ? ? ? ? ? ? ? uint64

innerErrMsg? ? ? ? ? ? ? ? ? ? ? ? ? ? string

innerErr? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? error

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碗誉,一起剝皮案震驚了整個濱河市稠炬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌磷蛹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異忙灼,居然都是意外死亡,警方通過查閱死者的電腦和手機钝侠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門该园,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人帅韧,你說我怎么就攤上這事里初。” “怎么了忽舟?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵双妨,是天一觀的道長。 經(jīng)常有香客問我叮阅,道長刁品,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任浩姥,我火速辦了婚禮挑随,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘勒叠。我一直安慰自己镀裤,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布缴饭。 她就那樣靜靜地躺著暑劝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颗搂。 梳的紋絲不亂的頭發(fā)上担猛,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音,去河邊找鬼傅联。 笑死先改,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蒸走。 我是一名探鬼主播仇奶,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼比驻!你這毒婦竟也來了该溯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤别惦,失蹤者是張志新(化名)和其女友劉穎狈茉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掸掸,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡氯庆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了扰付。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堤撵。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖羽莺,靈堂內(nèi)的尸體忽然破棺而出实昨,到底是詐尸還是另有隱情,我是刑警寧澤禽翼,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布屠橄,位于F島的核電站族跛,受9級特大地震影響闰挡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜礁哄,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一长酗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧桐绒,春花似錦夺脾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至烁竭,卻和暖如春菲茬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工婉弹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留睬魂,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓镀赌,卻偏偏與公主長得像氯哮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子商佛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容