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

  • 相关阅读:
    sparql学习sparql示例、dbpedia在线验证
    中国绿卡
    逾期率的水有多深,你知道吗?
    ICO和区块链区别
    What are the benefits to using anonymous functions instead of named functions for callbacks and parameters in JavaScript event code?
    Link static data in sql source control
    sql data compare
    viewbag
    多态的实际使用
    win10 sedlauncher.exe占用cpu处理
  • 原文地址:https://www.cnblogs.com/tickobject/p/3595192.html
Copyright © 2011-2022 走看看