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

但又分三種
  • Scanenge
  • Full non-compact GC
  • Full compact GC
不過young / old generation 的大小要怎麼決定呢
另外與其他JavaScriptCore or Java的GC有什麼不同呢
每個人的GC都說是棒呆了
----------------------------------
RE

Webkit跟V8在String 上的 implementation哪不一樣造成JSCRE 的performance不好

The implementation of automaton to recognize RE

2 comments:

Anonymous said...

I am really impressed with your writing skills as well
as with the layout on your weblog. Is this a paid theme or did you customize it yourself?
Anyway keep up the nice quality writing, it is rare to see a great
blog like this one nowadays.

My webpage - home cellulite treatment

College of Computer qassim said...

I'm really enjoying the design and layout of your website.
Qassim & QU