Friday, June 12, 2009

用vi來改binary file

最近試著用vi來改binary
加 -b
$> vi -b BINARY_FILE

打開binary後
:%!xxd

就會看到byte 跟ascii
像ultraedit看到的那樣

不過沒像ultraedit方便 左邊到哪 右邊就到哪

改完後
:%!xxd -r

然後就存檔啦

一開始不加-b的話 vi最後會幫你加上eol 所以會多一個byte
少這一步就蝦忙很久了.....

Tuesday, June 9, 2009

Chromium上也有zygote了

繼Android後
chromium上也放zygote了
http://src.chromium.org/viewvc/chrome?view=rev&revision=17909
不過還沒研究兩者的差別就是了

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