如何通过v8编译javascript?

时间:2018-04-03 23:12:28

标签: v8 libv8

hello-world为例。 我有几个问题:

  1. v8::Isolate做什么?它是否创建了一个新线程
  2. v8::Isolate::Scope做什么?
  3. v8::HandleScope做什么?
  4. v8::Local<v8::Context>做什么?
  5. v8::Script::Compile做什么?它是否直接将js代码编译为机器代码?
  6. 感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

请参阅official wiki

  
      
  • 隔离是具有自己的堆的VM实例。
  •   
  • 本地句柄是指向对象的指针。使用句柄访问所有V8对象,由于V8垃圾收集器的工作方式,它们是必需的。
  •   
  • 句柄范围可以被认为是任意数量句柄的容器。当您完成手柄操作后,不必单独删除每个手柄,只需删除其范围即可。
  •   
  • 上下文是一种执行环境,允许单独的,不相关的JavaScript代码在V8的单个实例中运行。您必须明确指定要在其中运行任何JavaScript代码的上下文。
  •   
     

Embedder's Guide

中更详细地讨论了这些概念

如果您已阅读现有文档,如果仍有任何疑问,请提出更具体的问题。

关于(5):在当前版本的V8中,v8::Script::Compile编译V8解释器的字节码。在早期版本中,它编译了未经优化的机器代码。区别在于您不必担心的内部实施细节: - )