原创 Surface研究報告

Surface研究報告 這篇文章主要描述從 Surface的創建,即客戶數據是如何通過 Surface進行顯示的。 一.從 Activity的創建說起 1.進程的創建 創建 Activity的過程,首先要從創建Activity所在的進程說

原创 v8::StringObject的內存佈局

使用該內存佈局來查看內存數據,編譯器watch中看不到這樣的對象 特別需要說明的是length字段,它是一個smi對象,注意不是對象指針,而是對象,該類在objects.h中定義,對於32bit系統,它的最低位必須是0,也就是說它的取值

原创 RIL研究報告

一.整體架構綜述 ril用於實現打電話,發短信等通信業務功能,它主要通過AT命令與硬件模塊交互實現功能。   這裏一共涉及兩個進程,一個是Phone process,一個是ril進程,Phone顯然是上層進程,ril是負責與硬件打交道

原创 v8::internal::Utf16CharaterStream類

Ecma-262中規定要求使用utf16來分析javascript,如上的一系列類就是把源數據作爲一個流輸入。基類Utf16CharacterStream提供基本的advance和pushback,seekforward方法, Buff

原创 【整理】crosstool-ng中的Architecture level,Emit assembly for CPU,Tune for CPU對於TQ2440的S3C2440的ARM920T填寫何值

摘自【整理】crosstool-ng中的Architecture level,Emit assembly for CPU,Tune for CPU對於TQ2440的S3C2440的ARM920T填寫何值 【背景】 折騰: 【記錄】Cyg

原创 SurfaceFlinger研究報告

SurfaceFlinger研究報告 SurfaceFlinger研究報告                                                                                 

原创 v8的初始化

isolate.cc中定義的 struct StaticInitializer {   StaticInitializer() {     Isolate::EnsureDefaultIsolate();   } } static_ini

原创 Binder驅動初探

Binder驅動初探 一.Binder驅動涉及的基本數據結構 1.binder_buffer 對mmap分配的內存進行管理的基本節點 struct binder_buffer {     struct list_head en

原创 Activity研究報告

Activity與Surface 這篇文章主要描述從Activity的創建,直到Surface顯示的過程 一.Activity的創建 1.進程的創建 創建Activity的過程,首先要從創建Activity所在的進程說起。在用戶請求啓動某

原创 v8::internal::Parser中的Expression解析

首先需要參考Ecma-262文檔中的附錄A.3Expression中的產生式,v8中的代碼是據此進行語法分析的,它採用的算符優先的語法分析方法,在token.h中給出了各種算符的precedence,關於算符優先算法,wiki中給出如下的

原创 v8中的visitor模式

在設計模式中,有一種visitor模式,它給出了一種在編譯器構造時使用的經典模式,如下圖所示: 語法樹的節點存在不同的類型,在不同的編譯階段對這些節點的操作是不同的,爲了避免操作與數據的耦合,產生了visitor模式,如下圖所示: 實

原创 v8的Zone內存機制

在編譯過程中使用的內存分配機制,不同於javascript運行期的垃圾回收機制,由於在編譯過程中,尤其是生成AST(Abstract Syntax Tree)的過程中,要使用大量的小內存,V8使用了Zone類,它通過malloc得到一塊

原创 SystemServer研究報告

一.SystemServer的啓動 SystemServer是由Zygote 啓動的進程,它運行 java代碼,在該進程中啓動其他的 Java層服務。SystemServer 首先從SystemServer.main開始 [java

原创 Qemu模擬arm cpu運行Linux

Qemu模擬arm cpu運行Linux系統 本文介紹使用qemu虛擬arm cpu來運行和調試Linux系統的一般方法 一.首先需要構建tool-

原创 Zygote研究報告

一.Zygote的前世今生 1.前世在init.rc中,zygote作爲一個service被啓動,其配置爲: service zygote /sys