nodejs c++启动过程3

原创 2013年12月03日 12:04:21


Persistent<Context> v8::Context::New(
    v8::ExtensionConfiguration* extensions,
    v8::Handle<ObjectTemplate> global_template,
    v8::Handle<Value> global_object) {
  i::Isolate::EnsureDefaultIsolate();
  i::Isolate* isolate = i::Isolate::Current();
  EnsureInitializedForIsolate(isolate, "v8::Context::New()");
  LOG_API(isolate, "Context::New");
  ON_BAILOUT(isolate, "v8::Context::New()", return Persistent<Context>());


// 下面的内容,上接博客1
  // Enter V8 via an ENTER_V8 scope.
  i::Handle<i::Context> env;

  {

// 这个是进入引擎,使用VMState类,在析构的时候,离开引擎

    ENTER_V8(isolate);
    v8::Handle<ObjectTemplate> proxy_template = global_template;
    i::Handle<i::FunctionTemplateInfo> proxy_constructor;
    i::Handle<i::FunctionTemplateInfo> global_constructor;




    if (!global_template.IsEmpty()) {
      // Make sure that the global_template has a constructor.
      global_constructor =
          EnsureConstructor(Utils::OpenHandle(*global_template));




      // Create a fresh template for the global proxy object.
      proxy_template = ObjectTemplate::New();
      proxy_constructor =
          EnsureConstructor(Utils::OpenHandle(*proxy_template));




      // Set the global template to be the prototype template of
      // global proxy template.
      proxy_constructor->set_prototype_template(
          *Utils::OpenHandle(*global_template));




      // Migrate security handlers from global_template to
      // proxy_template.  Temporarily removing access check
      // information from the global template.
      if (!global_constructor->access_check_info()->IsUndefined()) {
        proxy_constructor->set_access_check_info(
            global_constructor->access_check_info());
        proxy_constructor->set_needs_access_check(
            global_constructor->needs_access_check());
        global_constructor->set_needs_access_check(false);
        global_constructor->set_access_check_info(
            isolate->heap()->undefined_value());
      }
    }




    // Create the environment.
    env = isolate->bootstrapper()->CreateEnvironment(
        isolate,
        Utils::OpenHandle(*global_object, true),
        proxy_template,
        extensions);




    // Restore the access check info on the global template.
    if (!global_template.IsEmpty()) {
      ASSERT(!global_constructor.is_null());
      ASSERT(!proxy_constructor.is_null());
      global_constructor->set_access_check_info(
          proxy_constructor->access_check_info());
      global_constructor->set_needs_access_check(
          proxy_constructor->needs_access_check());
    }
    isolate->runtime_profiler()->Reset();
  }
  // Leave V8.




  if (env.is_null()) {
    return Persistent<Context>();
  }
  return Persistent<Context>(Utils::ToLocal(env));
}

nodejs c++启动过程1

在isolate文件中中: struct StaticInitializer {   StaticInitializer() {     Isolate::EnsureDefaultIsolate()...
  • lijinchao2007
  • lijinchao2007
  • 2013年12月02日 20:12
  • 781

nodejs 启动过程2

水电费是否 2-5 Isolate::Init bool Isolate::Init(Deserializer* des) {   ASSERT(state_ != INITIALIZED);  ...
  • lijinchao2007
  • lijinchao2007
  • 2013年12月03日 11:59
  • 881

【Node JS环境搭建及sublime Text 3配置Node Js环境】

1.Node Js 安装(windows环境下)载node js官网下载安装包,官网网址:https://nodejs.org/en/ 或者在作者上传在CSDN的资源也可用:http://downlo...
  • u010989191
  • u010989191
  • 2016年04月17日 00:23
  • 11791

node.js安装、启动、测试

概念 Node.js 是构建在Chrome javascript runtime之上的平台,能够很容易的构建快速的,可伸缩性的网络应用程序。Node.js使用事件驱动,非阻塞I/O 模式,这使它能够...
  • ikscher
  • ikscher
  • 2014年11月09日 15:04
  • 4485

nodejs学习笔记(一)——nodejs的安装和启动第一个httpserver

对于一个前台开发而言,没有使用过nodejs简直是一种耻辱,不过什么时候开始都不算晚,故以下是笔者在洗刷耻辱过程中的一点经验,供大家分享。 入门是在runoob的教程指导下开始的,但是教程里面更多...
  • lqlqlq007
  • lqlqlq007
  • 2016年09月04日 08:37
  • 14248

Sublime text3安装及Nodejs开发环境的配置

Sublime text3及插件包的安装,nodejs插件包的修改
  • bjqiao
  • bjqiao
  • 2017年04月15日 00:30
  • 549

C++与Nodejs的交互

待续
  • anhuizhuanjiao
  • anhuizhuanjiao
  • 2016年03月09日 18:04
  • 4394

sublime text 3 下的nodejs环境配置以及新增nodejs的操作按钮实现杀死node进程,待优化

sublime text 3 下的nodejs环境配置以及新增nodejs的操作按钮实现杀死node进程
  • Ender__
  • Ender__
  • 2016年11月22日 17:37
  • 868

树莓派3/A20 Bootloader加载过程分析

作为一名树莓派3的玩家,可能会将会感兴趣于这个板子的启动过程,就嵌入式linux而言,整个加电——启动bootloader——启动内核——加载rootfs流程对于新手会感到非常的模糊,而不知如何下手。...
  • ok138ok
  • ok138ok
  • 2014年03月15日 10:26
  • 8223

nodejs程序配置成windows-server服务,实现开机自启动

nodejs程序配置成windows-server服务,实现开机自启动
  • zzwwjjdj1
  • zzwwjjdj1
  • 2017年06月20日 11:40
  • 3802
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:nodejs c++启动过程3
举报原因:
原因补充:

(最多只允许输入30个字)