facebook hiphop php vm 实现概述
一、src目录概述:
compiler:编译器
expression:php的expression所对应的ast node使用的数据结构
statement:对应php的语句
parser:生成出来ast
analysis:静态语义分析(变量类型、作用域、常量表、变量表、函数表……)
ffi:多语言交互层(大概是实现胶水的接口)
hphp:入口
idl:接口定义
system:php这一层的系统环境
third_party:借用的第三方包
util:工具类
runtime:整个转换器的运行时系统
tmp:生成的文件
ext:包装给php使用的外部函数,即php中使用的一些基础功能需要有对应的c++实现(因为此runtime是用c++实 现 的,所以这些函数也只能用c++来写),当然在实现时可以使用第三方包
base:运行时中要使用的基础数据结构和功能(ext中的外部函数的功能需要此处的支持)
eval:核心的runtime环境
可以看出这些代码中大家最关心的应该是compiler和runtime模块。
二、入口
hphp/main.cpp
三、compiler概述
1、分析的层次关系从大到小是 package----class---funtion---variable---constant。
2、scanner和parser的实现和一般的编译器的实现是一样的,scanner的出口int getNextToken(ScannerToken &t, Location &l);,parser的出口Parser::ParseString()
3、静态分析;采用遍历者模式,分析结果封装在analusis_result这个数据结构中,即此数据结构存储此阶段的结果。具体的代码中主要分析了类中的函数情况、函数中表达式情况、控制流图(ControlFlowGraph)、表达式字典、数据流(如检查赋值语句的左值是否合法)、符号表等
四、runtime概述
1、入口 eval.cpp
2、RequestEvalState 管理符号表信息
今天就先写这些,如果有人感兴趣的话,我再往细里写吧!
分享到:
相关推荐
HipHop PHP:Facebook出品的PHP虚拟机,运行时和JIT
HipHop VM(HHVM)是Facebook推出的用来执行PHP代码的虚拟机,它是一个PHP的JIT(Just-In- Time)编译器,同时具有产生快速代码和即时编译的优点。Facebook表示,HHVM将替代HPHPi,用于所有的PHP执行。根据 Facebook...
Facebook PHP SDK 4.0
HHVM即HipHop Virtual Machine,目前是3.0版本,出自Facebook,它先将PHP和Hack程序编译为中间字节码,然后通过just-in-time (JIT)编译器将字节码动态翻译为x64机器代码,应用上了非常多的编译优化技术。...
Facebook的RocksDB平台发展概述.docx
Facebook 开源动画库 POP 实现真实衰减动画
facebook架构
NULL 博文链接:https://hfutfei.iteye.com/blog/747570
Laravel开发-facebook-php-sdk-laravel Facebook PHP SDK与Laravel配合使用的包装。
Django-facebook, 在 python 中,Facebook开放图api使用 Django 框架实现了 基于 Thierry Schellenbach ( mellowmorning.com ) 的 Django 状态现在,Django 和Facebook都在迅速改变。 同时,我在一个初创公司上班,...
facebook-like-button, Facebook社交插件'Like'的实现 Facebook like-button 的Facebook'像'社交插件插件的实现。官方的 Facebook没有为Android提供这样的组件。这个库使用 WebView 来显示 <iframe> 插件。...
The facebook php sdk example
NULL 博文链接:https://eric-gao.iteye.com/blog/1590430
Facebook 数据库 java 用户信息存储提取
Laravel开发-facebook 用于Laravel 4的Facebook PHP SDK包
Laravel开发-laravel-facebook-php-ads-sdk 用于Laravel的Facebook广告API SDK
使用自定义的按钮,实现Facebook授权登陆,跳转后显示用户的信息,并且在跳转后的页面可以选择退出登陆。代码简洁,很容易理解。
适用于PHP的Facebook SDK(v5) 该存储库包含开源PHP SDK,可让您从PHP应用程序访问Facebook平台。安装Facebook PHP SDK可以与一起安装。 运行以下命令: composer require facebook/graph-sdk 请注意,将Facebook ...
Facebook 营销介绍概述
Laravel开发-laravel-facebook Laravel的Facebook组件。