Skip to content

Espresso, NodeJS 16.3 #60

@prepare

Description

@prepare

file src/node_main_instance.cc

about line 14

 #if HAVE_INSPECTOR
#include "inspector/worker_inspector.h"  // ParentInspectorHandle
#endif
//////////////////////////////////
//#espresso ,#1
#include "../src/libespresso/bridge2.h"

void DoEngineSetupCallback(JsEngine* engine, JsContext* jsContext);
void DoEngineClosingCallback(JsEngine* engine,
                             JsContext* jsContext,
                             int exitCode);
//////////////////////////////////
namespace node {

using v8::Context;
using v8::HandleScope;
using v8::Isolate;
using v8::Local;
using v8::Locker;

patch 1: src/node_main_instance.cc


about line 135

int NodeMainInstance::Run(const EnvSerializeInfo* env_info) {
  Locker locker(isolate_);
  Isolate::Scope isolate_scope(isolate_);
  HandleScope handle_scope(isolate_);

  int exit_code = 0;
  DeleteFnPtr<Environment, FreeEnvironment> env =
      CreateMainEnvironment(&exit_code, env_info);

  CHECK_NOT_NULL(env);
  {
    Context::Scope context_scope(env->context());

    if (exit_code == 0) {
      /////////////////////////////
      //#espresso ,#2
      
       JsEngine* jsEngine = JsEngine::NewFromExistingIsolate(isolate_);
       v8::Persistent<Context>* pcontext =
          new v8::Persistent<Context>(isolate_, env->context());
       JsContext* jscontext =
          JsContext::NewFromExistingContext(0, jsEngine, pcontext);
       DoEngineSetupCallback(jsEngine, jscontext);

      ////////////////////////////////
      LoadEnvironment(env.get(), StartExecutionCallback{ 
          });
    
      exit_code = SpinEventLoop(env.get()).FromMaybe(1);
      //////////////////////////////////
      ////#espresso ,#3
      DoEngineClosingCallback(jsEngine, jscontext, exit_code);
      ////////////////////////////////
    }

patch 2&3: src/node_main_instance.cc


Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions