• 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

  • 相关阅读:
    Windows Internals 笔记——作业
    Windows Internals 笔记——终止进程
    数据结构与算法-java-数组实现队列和栈
    数据结构与算法-java-稀疏数组
    学习笔记-java两种核心机制-JVM和GC
    python-Django-学习笔记
    python爬虫-大二时候的学习笔记
    KMP算法
    Docker
    排序与查找
  • 原文地址:https://www.cnblogs.com/tickobject/p/3595192.html
Copyright © 2020-2023  润新知