diff --git a/ecmascript/compiler/aot_compiler.cpp b/ecmascript/compiler/aot_compiler.cpp index 10a6ba63..a45c64b2 100644 --- a/ecmascript/compiler/aot_compiler.cpp +++ b/ecmascript/compiler/aot_compiler.cpp @@ -110,29 +110,32 @@ int Main(const int argc, const char **argv) return -1; } - LocalScope scope(vm); - std::string entry = entrypoint.GetValue(); - arg_list_t pandaFileNames = files.GetValue(); - std::string triple = runtimeOptions.GetTargetTriple(); - std::string outputFileName = runtimeOptions.GetAOTOutputFile(); - size_t optLevel = runtimeOptions.GetOptLevel(); - BytecodeStubCSigns::Initialize(); - CommonStubCSigns::Initialize(); - RuntimeStubCSigns::Initialize(); + { + LocalScope scope(vm); + std::string entry = entrypoint.GetValue(); + arg_list_t pandaFileNames = files.GetValue(); + std::string triple = runtimeOptions.GetTargetTriple(); + std::string outputFileName = runtimeOptions.GetAOTOutputFile(); + size_t optLevel = runtimeOptions.GetOptLevel(); + BytecodeStubCSigns::Initialize(); + CommonStubCSigns::Initialize(); + RuntimeStubCSigns::Initialize(); - std::string logMethods = vm->GetJSOptions().GetlogCompiledMethods(); - AotLog log(logMethods); - AOTFileGenerator generator(&log, vm); - PassManager passManager(vm, entry, triple, optLevel, &log); - for (const auto &fileName : pandaFileNames) { - COMPILER_LOG(INFO) << "AOT start to execute ark file: " << fileName; - if (passManager.Compile(fileName, generator) == false) { - ret = false; - break; + std::string logMethods = vm->GetJSOptions().GetlogCompiledMethods(); + AotLog log(logMethods); + AOTFileGenerator generator(&log, vm); + PassManager passManager(vm, entry, triple, optLevel, &log); + for (const auto &fileName : pandaFileNames) { + COMPILER_LOG(INFO) << "AOT start to execute ark file: " << fileName; + if (passManager.Compile(fileName, generator) == false) { + ret = false; + break; + } } + generator.SaveAOTFile(outputFileName); + generator.GenerateSnapshotFile(); } - generator.SaveAOTFile(outputFileName); - generator.GenerateSnapshotFile(); + JSNApi::DestroyJSVM(vm); paParser.DisableTail(); return ret ? 0 : -1; diff --git a/ecmascript/js_vm/main.cpp b/ecmascript/js_vm/main.cpp index c39560aa..5b33dd1e 100644 --- a/ecmascript/js_vm/main.cpp +++ b/ecmascript/js_vm/main.cpp @@ -109,16 +109,18 @@ int Main(const int argc, const char **argv) return -1; } - LocalScope scope(vm); - std::string entry = entrypoint.GetValue(); + { + LocalScope scope(vm); + std::string entry = entrypoint.GetValue(); - arg_list_t fileNames = files.GetValue(); - for (const auto &fileName : fileNames) { - auto res = JSNApi::Execute(vm, fileName, entry); - if (!res) { - std::cerr << "Cannot execute panda file '" << fileName << "' with entry '" << entry << "'" << std::endl; - ret = false; - break; + arg_list_t fileNames = files.GetValue(); + for (const auto &fileName : fileNames) { + auto res = JSNApi::Execute(vm, fileName, entry); + if (!res) { + std::cerr << "Cannot execute panda file '" << fileName << "' with entry '" << entry << "'" << std::endl; + ret = false; + break; + } } }