無意中發現了一個v8+llvm的project
Sanjo JS engine
http://www.brrian.net/js/Project_Home.html
他其實是Purdue的某個graduate class裡的project
http://web.me.com/vitekj/565s10/Welcome.html
裡面的resource都project都蠻不錯的
大部分都在作js 的engine
http://code.google.com/p/unladen-swallow/wiki/RelevantPapers
http://web.me.com/vitekj/565s10/Projects.html
不過好像大部分都沒open source就是了..
Showing posts with label v8. Show all posts
Showing posts with label v8. Show all posts
Thursday, October 6, 2011
Friday, October 15, 2010
在v8的javascript file加log
最近發現v8一直死在從native call javascript function call的時候一直死掉
苦無log可尋
可以想學 d8.cc中 create 一個 FunctionTemplete 來印
可是後來發現 其實runtime.cc 中有一個Runtime_Log function就可以用了
不過要先把log_runtime 的option 打開
跟define ENABLE_LOGGING_AND_PROFILING
不過還不確定詳細的功能就是了
簡單的印log就
%Log('hello', [""]);
要用c的printf 後面是 valist那種 後面的js array還不知道怎麼用就是了
苦無log可尋
可以想學 d8.cc中 create 一個 FunctionTemplete 來印
可是後來發現 其實runtime.cc 中有一個Runtime_Log function就可以用了
不過要先把log_runtime 的option 打開
跟define ENABLE_LOGGING_AND_PROFILING
不過還不確定詳細的功能就是了
簡單的印log就
%Log('hello', [""]);
要用c的printf 後面是 valist那種 後面的js array還不知道怎麼用就是了
Saturday, June 6, 2009
V8 javascript engine
http://code.google.com/events/io/sessions/V8BuildingHighPerfJavascriptEngine.html
在V8 Memory Model 那頁
他用了tagged pointers
因為object都是4 byte aligned 的 所以bit 0 1都沒有東西
所以這兩個bit就會被設為01 來代表這是個pointer
而如果是一般的integer時 bit 0會被設為0
只有31bit來代表 signed integer
所以integer 就是 2^30 - 1 ~ -2^30
不過這ok嗎????
然後Elements Pointer是在幹嘛的?
-----------------------------------
接下來在Hidden class的介紹
Properties的pointer 指到一個buffer 這buffer是多大呢???
然後在p2 construct的時候
使用hidden class的design decision? 90%的數據是怎麼來的
會不會這時class 0 1已經被GC掉了? 如果被GC重新construct的話 最後p2還會指到class 2嗎
還是會指到class 3 但class 3跟class 2的content 是一樣的
在video最後面有人問到說如果p2 是先constuct y再x的話 p2 跟p1會是一樣的嗎?
答案是不一樣的 雖然他們的內容是一樣 只是順序不同
他們還是兩個不同的class
-----------------------------------
接下來在Monomorphic load inline cache
好像是intel syntax?
一開始 compare 這是個pointer or integer
然後比這class的pointer
如果都一樣的話就load properties 來達到fast property access的功能
不過megamorphic好像沒講到太多
------------------------------------
接下來講GC
generational
但又分三種
另外與其他JavaScriptCore or Java的GC有什麼不同呢
每個人的GC都說是棒呆了
----------------------------------
RE
Webkit跟V8在String 上的 implementation哪不一樣造成JSCRE 的performance不好
The implementation of automaton to recognize RE
在V8 Memory Model 那頁
他用了tagged pointers
因為object都是4 byte aligned 的 所以bit 0 1都沒有東西
所以這兩個bit就會被設為01 來代表這是個pointer
而如果是一般的integer時 bit 0會被設為0
只有31bit來代表 signed integer
所以integer 就是 2^30 - 1 ~ -2^30
不過這ok嗎????
然後Elements Pointer是在幹嘛的?
-----------------------------------
接下來在Hidden class的介紹
Properties的pointer 指到一個buffer 這buffer是多大呢???
然後在p2 construct的時候
使用hidden class的design decision? 90%的數據是怎麼來的
會不會這時class 0 1已經被GC掉了? 如果被GC重新construct的話 最後p2還會指到class 2嗎
還是會指到class 3 但class 3跟class 2的content 是一樣的
在video最後面有人問到說如果p2 是先constuct y再x的話 p2 跟p1會是一樣的嗎?
答案是不一樣的 雖然他們的內容是一樣 只是順序不同
他們還是兩個不同的class
-----------------------------------
接下來在Monomorphic load inline cache
好像是intel syntax?
一開始 compare 這是個pointer or integer
然後比這class的pointer
如果都一樣的話就load properties 來達到fast property access的功能
不過megamorphic好像沒講到太多
------------------------------------
接下來講GC
generational
但又分三種
- Scanenge
- Full non-compact GC
- Full compact GC
另外與其他JavaScriptCore or Java的GC有什麼不同呢
每個人的GC都說是棒呆了
----------------------------------
RE
Webkit跟V8在String 上的 implementation哪不一樣造成JSCRE 的performance不好
The implementation of automaton to recognize RE
Subscribe to:
Posts (Atom)