jea*_*ean 10 javascript c++ google-chrome v8
我是Google V8和Javascript的新手,我正在尝试使用C++为Javascript添加一个新类.
我使用Webkit的V8绑定完成了一些工作,引用是:webkit idl和v8绑定
现在我想通过修改V8的代码而不是简单地使用V8的api进行扩展来直接将它集成到V8引擎中.换句话说,我想在Javascript中添加一个类似于Array类型的新类,使用相同的实现机制.
我搜索过互联网,包括谷歌的文档,但只看到了使用本机代码嵌入V8的指南.
我在哪里可以找到有关修改V8代码的指南?
或者我在哪里可以找到有关V8设计架构的文档?
或者任何人都可以描述V8如何在C++中实现Array类型?
非常感谢.
首先,你可能真的可以使用v8 api来做任何你想做的事情.您可以使用它来创建主要与内置对象相同的原型,也可以将C++函数调用绑定到JS函数调用.除非你需要非常快的东西或检查或操纵v8内部,否则没有理由修改v8本身.例如,Chrome的DOM实现使用v8 API而不是直接在v8中实现.嵌入式指南实际上具有创建"类"所需的所有信息(请记住,在JS中它实际上是原型继承):https://developers.google.com/v8/embed#templates.
也就是说,这里有一些很好的地方可以查看源代码,比如数组对象.我不确定任何设计文档,你可能最好看看源代码.
数组对象本身位于:https: //code.google.com/p/v8/source/browse/trunk/src/objects.h#8409
这里实现了一些数组api函数(许多函数使用与扩展相同的公共API):https: //code.google.com/p/v8/source/browse/trunk/src/builtins.cc#511
一些数组api函数在JavaScript中实现:https://code.google.com/p/v8/source/browse/trunk/src/array.js
搜索JSArray,你会看到更多.特别注意本机代码生成器中的位,因为如果你真的想要利用在这个级别编写的一些自定义类型,你将需要编写代码来生成有效的机器代码,对于一堆不同的体系结构...
编辑:看起来V8文档已经移动(并且更好),而不是写这个答案时,这里有一些快速链接到有用的文档:
| 归档时间: |
|
| 查看次数: |
2823 次 |
| 最近记录: |