vmboiler:一个基于 ASM 的小型库,可为基于 JVM 的动态类型语言生成乐观类型的字节码-源码

上传者: 42137539 | 上传时间: 2021-06-08 18:05:06 | 文件大小: 2.07MB | 文件类型: ZIP
虚拟机 ASM 之上的一个小库,它生成乐观类型的字节码,旨在简化在 JVM 之上的快速动态类型语言运行时的实现。 常问问题 这个怎么运作 ? 锅炉仅提供 8 个操作,并要求运行时开发人员将语言语义映射到这些操作。 只有 8 个操作,因为所有方法调用、字段访问、转换等都是使用一种称为调用的操作完成的,该操作利用调用动态来指定确切的语义。 然后锅炉要求运行时开发人员提供类型注释作为 8 个操作的提示。 这些类型注释可以是乐观的,表明类型可以是原始类型或对象类型(我们称之为混合类型)。 在运行时,如果一个值不再适合其原始类型,锅炉会插入代码来处理它并调用两个特殊方法,指示一个参数或返回值是否被调用为 . 例如,调用这些方法允许运行时捕获更改的值并更改相应的类型配置文件,然后使代码无效并使用更新的配置文件重新生成一个新的。 为什么它不是非常慢? 这个想法是生成比 Java 中的等效代码更多的代

文件下载

资源详情

[{"title":"( 72 个子文件 2.07MB ) vmboiler:一个基于 ASM 的小型库,可为基于 JVM 的动态类型语言生成乐观类型的字节码-源码","children":[{"title":"vmboiler-master","children":[{"title":".gitignore <span style='color:#111;'> 203B </span>","children":null,"spread":false},{"title":"src","children":[{"title":"com","children":[{"title":"github","children":[{"title":"forax","children":[{"title":"vmboiler","children":[{"title":"Type.java <span style='color:#111;'> 1.69KB </span>","children":null,"spread":false},{"title":"rt","children":[{"title":"OptimisticError.java <span style='color:#111;'> 906B </span>","children":null,"spread":false},{"title":"RT.java <span style='color:#111;'> 7.54KB </span>","children":null,"spread":false}],"spread":true},{"title":"Value.java <span style='color:#111;'> 1.77KB </span>","children":null,"spread":false},{"title":"CodeGen.java <span style='color:#111;'> 15.71KB </span>","children":null,"spread":false},{"title":"Var.java <span style='color:#111;'> 2.80KB </span>","children":null,"spread":false},{"title":"Constant.java <span style='color:#111;'> 4.51KB </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true}],"spread":true}],"spread":true},{"title":".classpath <span style='color:#111;'> 979B </span>","children":null,"spread":false},{"title":"LICENSE <span style='color:#111;'> 11.06KB </span>","children":null,"spread":false},{"title":".settings","children":[{"title":"org.eclipse.jdt.core.prefs <span style='color:#111;'> 1.65KB </span>","children":null,"spread":false}],"spread":true},{"title":"README.md <span style='color:#111;'> 3.23KB </span>","children":null,"spread":false},{"title":".project <span style='color:#111;'> 368B </span>","children":null,"spread":false},{"title":"script","children":[{"title":".gitignore <span style='color:#111;'> 12B </span>","children":null,"spread":false},{"title":"src","children":[{"title":"com","children":[{"title":"github","children":[{"title":"forax","children":[{"title":"vmboiler","children":[{"title":"sample","children":[{"title":"script","children":[{"title":"Type.java <span style='color:#111;'> 2.93KB </span>","children":null,"spread":false},{"title":"Op.java <span style='color:#111;'> 989B </span>","children":null,"spread":false},{"title":"Expr.java <span style='color:#111;'> 2.86KB </span>","children":null,"spread":false},{"title":"ConstantPoolPatch.java <span style='color:#111;'> 992B </span>","children":null,"spread":false},{"title":"TypeInferer.java <span style='color:#111;'> 4.56KB </span>","children":null,"spread":false},{"title":"Fn.java <span style='color:#111;'> 731B </span>","children":null,"spread":false},{"title":"Generator.java <span style='color:#111;'> 12.12KB </span>","children":null,"spread":false},{"title":"Main.java <span style='color:#111;'> 648B </span>","children":null,"spread":false},{"title":"Parser.java <span style='color:#111;'> 4.12KB </span>","children":null,"spread":false},{"title":"Binding.java <span style='color:#111;'> 391B </span>","children":null,"spread":false},{"title":"Visitor.java <span style='color:#111;'> 692B </span>","children":null,"spread":false},{"title":"Script.java <span style='color:#111;'> 288B </span>","children":null,"spread":false},{"title":"RT.java <span style='color:#111;'> 8.19KB </span>","children":null,"spread":false},{"title":"Linker.java <span style='color:#111;'> 4.08KB </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":true}],"spread":true}],"spread":true},{"title":"Main.java <span style='color:#111;'> 765B </span>","children":null,"spread":false}],"spread":true},{"title":"script.ebnf <span style='color:#111;'> 2.40KB </span>","children":null,"spread":false},{"title":"samples","children":[{"title":"while.script <span style='color:#111;'> 86B </span>","children":null,"spread":false},{"title":"gcd.script <span style='color:#111;'> 117B </span>","children":null,"spread":false},{"title":"fibo_empty.script <span style='color:#111;'> 58B </span>","children":null,"spread":false},{"title":"block.script <span style='color:#111;'> 146B </span>","children":null,"spread":false},{"title":"fibo_overflow.script <span style='color:#111;'> 93B </span>","children":null,"spread":false},{"title":"fibo.script <span style='color:#111;'> 93B </span>","children":null,"spread":false},{"title":"hello.script <span style='color:#111;'> 34B </span>","children":null,"spread":false},{"title":"fun.script <span style='color:#111;'> 96B </span>","children":null,"spread":false},{"title":"bignum.script <span style='color:#111;'> 44B </span>","children":null,"spread":false}],"spread":true},{"title":"gen-src","children":[{"title":"com","children":[{"title":"github","children":[{"title":"forax","children":[{"title":"vmboiler","children":[{"title":"sample","children":[{"title":"script","children":[{"title":"lexer","children":[{"title":"LexerDataTable.java <span style='color:#111;'> 13.64KB </span>","children":null,"spread":false},{"title":"RuleEnum.java <span style='color:#111;'> 284B </span>","children":null,"spread":false}],"spread":false},{"title":"tools","children":[{"title":"Analyzers.java <span style='color:#111;'> 9.00KB </span>","children":null,"spread":false},{"title":"AnalyzerProcessor.java <span style='color:#111;'> 19.43KB </span>","children":null,"spread":false},{"title":"TerminalEvaluator.java <span style='color:#111;'> 1.62KB </span>","children":null,"spread":false},{"title":"ToolsDataTable.java <span style='color:#111;'> 2.36KB </span>","children":null,"spread":false},{"title":"GrammarEvaluator.java <span style='color:#111;'> 4.72KB </span>","children":null,"spread":false}],"spread":false},{"title":"parser","children":[{"title":"TerminalEnum.java <span style='color:#111;'> 276B </span>","children":null,"spread":false},{"title":"VersionEnum.java <span style='color:#111;'> 158B </span>","children":null,"spread":false},{"title":"ParserDataTable.java <span style='color:#111;'> 51.96KB </span>","children":null,"spread":false},{"title":"ProductionEnum.java <span style='color:#111;'> 586B </span>","children":null,"spread":false},{"title":"NonTerminalEnum.java <span style='color:#111;'> 247B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":true},{"title":"build.xml <span style='color:#111;'> 2.30KB </span>","children":null,"spread":false},{"title":"lib","children":[{"title":"tatoo-runtime.jar <span style='color:#111;'> 176.88KB </span>","children":null,"spread":false}],"spread":false},{"title":"benchmarks","children":[{"title":"gcd.script <span style='color:#111;'> 189B </span>","children":null,"spread":false},{"title":"Fibo.java <span style='color:#111;'> 200B </span>","children":null,"spread":false},{"title":"print_starts.script <span style='color:#111;'> 178B </span>","children":null,"spread":false},{"title":"Gcd.java <span style='color:#111;'> 360B </span>","children":null,"spread":false},{"title":"gcd.js <span style='color:#111;'> 258B </span>","children":null,"spread":false},{"title":"fibo.js <span style='color:#111;'> 86B </span>","children":null,"spread":false},{"title":"add1.script <span style='color:#111;'> 81B </span>","children":null,"spread":false}],"spread":false},{"title":"build-lib","children":[{"title":"tatoo.jar <span style='color:#111;'> 853.56KB </span>","children":null,"spread":false},{"title":"motocity","children":[{"title":"motocity-tatoo.jar <span style='color:#111;'> 208.00KB </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":true},{"title":"build.xml <span style='color:#111;'> 1.58KB </span>","children":null,"spread":false},{"title":"lib","children":[{"title":"src.zip <span style='color:#111;'> 374.48KB </span>","children":null,"spread":false},{"title":"asm-debug-all-5.0.3.jar <span style='color:#111;'> 640.65KB </span>","children":null,"spread":false}],"spread":true},{"title":"test","children":[{"title":"src","children":[{"title":"test","children":[{"title":"GCDGen.java <span style='color:#111;'> 4.01KB </span>","children":null,"spread":false},{"title":"Example.java <span style='color:#111;'> 6.13KB </span>","children":null,"spread":false},{"title":"GCDRT.java <span style='color:#111;'> 1.21KB </span>","children":null,"spread":false},{"title":"FiboRT.java <span style='color:#111;'> 1.49KB </span>","children":null,"spread":false},{"title":"FiboGen.java <span style='color:#111;'> 5.32KB </span>","children":null,"spread":false},{"title":"ExampleRT.java <span style='color:#111;'> 2.51KB </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"getting-started.md <span style='color:#111;'> 10.04KB </span>","children":null,"spread":false}],"spread":true}],"spread":false}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明