zoukankan      html  css  js  c++  java
  • 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 ; 操作能顺利完成而不会中途被打断.

        https://github.com/darkgem/js-engine

  • 相关阅读:
    MyBatis 处理sql中的 大于,小于,大于等于,小于等于
    以当前日期为时间轴 计算15 天的日期 和15 天后的日期
    java 常用时间操作类,计算到期提醒,N年后,N月后的日期
    用户号已经存在是否覆盖解决办
    List<bean> 转换成List<Map>
    feig中调用其他微服务接口无反应
    从实体类中取值 ,获取修改记录信息,保存修改记录信息
    java遍历实体类的属性和值
    从数据库将数据导出到excel表格
    树同构模板
  • 原文地址:https://www.cnblogs.com/tickobject/p/3595192.html
Copyright © 2011-2022 走看看