Javascript多线程引擎(八)】的更多相关文章

Javascript多线程引擎(八)    Javascript 多线程项目, 做到现在已经快3个月了(加上前期准备编译原理和必要的文档), 该项目(js-engine)已经快进入尾声了, 现在该引擎的特性包括如下: 1. 全C语言代码(适合嵌入式) 2. 没有正则表达式(不能算是好的特性 , 以后有机会可以添加) 3. 没有Unicon支持(也不是好特性, 只是支持Ascii) 4. 没有lable with 语句了(相信大家在Javascript编程中用这两个特性把) 5. 解析器报错(可以…
 Javascript多线程引擎(十)---Web服务器 经过一天的努力, 引擎可以支持web服务的功能了并且支持UTF-8的编码, 具有对HTTP参数的解析,状态码的配置, 响应报文的输出等. 提供了 startServer(function(request, response){ },port) 函数来打开Web服务. 而requset的方法为: getParameter(): String 可以让您指定请求参数名称,以取得对应的设定值. getServerName():String 请求的…
Javascript多线程引擎(九)--垃圾回收 垃圾回收这个话题对Programer来说是非常老旧的话题, 从手动的malloc/free 到半自动的 引用计数 再到全自动的 mark-sweep 算法 最后进化到 分代回收, 可以发现程序员越来越懒了^_^.  从繁琐的内存管理解放出来 对业务逻辑开发为主的程序员来说是非常有必要的事情,  So Java 等高级语言变成了现今的主流语言(当然也和它的跨平台和异常强大的类库相关). 作为Javascript引擎, 当然也不能少了垃圾回收的功能,…
Javascript多线程引擎(七)--synchronized关键字 经过两天的努力, 今天synchronzied关键字终于支持了, 如下是测试代码 thread() 是一个开启新线程的API, 后期会提供一个完整的Thtread 类, 现在就简单的使用把  ^_^ 支持的语法格式为: var a = synchronized function(){ //被同步的代码段 }; synchronzied function hello(){ //被同步的代码段 }; var lock  = {}…
Javascript多线程引擎(六) 经过三个月的时间, Javascript 引擎已经完成beta版本(还不支持多线程特性, 预计下个星期就可以支持了, 现阶段还在进行测试基本JS单元功能), 并且经过简单的测试. 使用如下: 从github中获得代码: github.com/darkgem/js-engine 下载代码, 进入build文件夹, 使用 cmake .. make 在build/shell下包含一个简单的shell程序, 使用file.js作为解析文件 运行结果如下: Pass…
Javascript多线程引擎(五)之异常处理 C语言没有提供一个像Java一样的异常处理机制, 这就带来了一个问题, 对于一个子函数中发生异常后, 需要在父函数调用子函数的位置进行Check, 如果发生异常则直接reuren.   这种机制, 会带来一个问题 ------- 过多的return 和  判断语句, 使得程序的维护成本提高. 而这个项目准备使用setjmp,longjmp的异常处理机制来实现throw异常后,能直接转到catch位置. /*一个函数中mark都要不同*/ #defi…
Javascript多线程引擎(四)--之C语言单继承 因为使用C语言做为开发语言, 而C语言在类的支持方面几乎为零, 而Javascript语言的Object类型是一个非常明显的类支持对象,所以这里需要提出一个方案对Object类型的继承进行支持. 本章节介绍一个简单的基于C语言单继承结构的实现,  实现非常的简单, 但是体现了Java 的OO思想. ////Object.h #ifndef _Object_ #define _Object_ /******************* cls:…
Javascript多线程引擎(三) 完成对ECMAScript-262 3rd规范的阅读后, 列出了如下的限制条件 1. 去除正则表达式( 语法识别先不编写) 2. 去除对Function Declaration的支持, 且把Function Expression 替代 FD 在运行到具体的代码的时候才进行变量声明如: var a; var a = 1; function a(){}; 当读取到如上的语句的时候, 直接根据上下文的环境进行PutValue操作 3. 去除lable, with…
Javascript多线程引擎(一) Javascript 天生是单线程的语言, 不支持synchronized等线程操作, 但是这便不妨碍Javascript作为web语言中最具有魅力语言之一. 虽然Node.js 已经非常的火热, 但是Javascript的解释器中并没有多线程版本(因为ecmascirpt标准的原因),导致Javascript多核CPU和多线程 编程支持并不是很友好. 这个序列是对Javascript语法的修改,最终做出一个支持synchronized和多线程的Javasc…
多线程Javascript解释器的大致架构 由于一个完整的解释器类似Google V8的解释器需要的工作量非常的大如需要实现如下的模块: 词法分析,语法分析器,AST转Byte模块,解释执行模块和JIT模块,当然也包括了垃圾回收模块和全局控制器模块, 而JIT模块需要对不同平台进行细分具体有IA32, ARM 两个平台的实现. 所以这个解释器在实现的模块上虽然也和其他解释器相同,但是不包括垃圾回收模块和JIT模块. 但是包括了一个多线程模块,用来扩展Javascript的多线程能力,功能类似与J…