Javascript多线程引擎(三)
Javascript多线程引擎(三)
完成对ECMAScript-262 3rd规范的阅读后, 列出了如下的限制条件
1. 去除正则表达式( 语法识别先不编写)
2. 去除对Function Declaration的支持, 且把Function Expression 替代 FD
在运行到具体的代码的时候才进行变量声明如:
var a;
var a = 1;
function a(){};
当读取到如上的语句的时候, 直接根据上下文的环境进行PutValue操作
3. 去除lable, with 语句
4. 去除对Unicon的支持, 仅支持Ascii
5. 函数中, arguments 不再和 function(a,b,c){}
中的a , b ,c 相关联
6. Parser 模块支持:
1. 报错功能, 当出现错误的时候直接终止解析, 并且可以显示具体的错误
2. 支持文件位置记录
7. Lex 模块使用Flex, 注意yytext 会被回收, 所以需要复制具体的String
8. 对于基本类型String, 使用char* 引用, 当产生新的String类型的Value的时候, 通常会产生新的内存空间来存储该string
9. 内置类型[Object, Function, Boolean, Error, String]等构造器使用 ReadOnly, Don‘t ENUM, Don‘t Delete类型的属性
10. 内置类型通过FindValue来获得具体的构造器
11. 垃圾回收的时间定义在所有 Engine执行完一个Context或者STOP的时候, 进行垃圾回收
12. 去除Infinly变量
13. 当一个Context失效的时候需要及时的消去(Engine运行完该Context)
14. JsVm全局只有一个, 类似JVM
15. API总共有两种类型:
1. 通用API (可以在初始阶段和Runntime阶段使用的API,通常不带有Engine*参数, 尽量把API设计为该类型)
2. Runtime API( 通常带有Engine*参数)
16. 如果通用API在Runtime API中需要使用 ENV变量, 则通过从TLS获取, 且该ENV配置只在Engine的Dispatch阶段被配置
17. 整个软件的加锁处理的目标是 保证基本的完整性. 如 Object.a = 1 ; 操作能顺利完成而不会中途被打断.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。