diff --git a/BUILD.gn b/BUILD.gn index 8d2180fd7d7020e455997fc0e8dcb829a1e564ad..41913750e1be81a0f4f4c481a4c27290f5b42955 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -544,8 +544,9 @@ source_set("libark_jsruntime_set") { public_configs += [ ":ark_jsruntime_windows_config" ] } + cflags_cc = [] if (is_standard_system) { - cflags_cc = [ "-fvisibility=hidden" ] + cflags_cc += [ "-fvisibility=hidden" ] } deps = [ @@ -559,19 +560,18 @@ source_set("libark_jsruntime_set") { deps += [ ":copy_asan_runtime" ] } - defines = [] - include_dirs = [] if (is_ohos && is_standard_system) { + defines = [] + include_dirs = [] if (enable_bytrace) { defines += [ "ENABLE_BYTRACE" ] include_dirs += [ "//base/hiviewdfx/hitrace/interfaces/native/innerkits/include/hitrace_meter" ] + cflags_cc += [ "-Wno-gnu-zero-variadic-macro-arguments" ] + } + if (enable_dump_in_faultlog) { + defines += [ "ENABLE_DUMP_IN_FAULTLOG" ] + include_dirs += [ "//base/hiviewdfx/faultloggerd/interfaces/innerkits/faultloggerd_client" ] } - defines += [ "ENABLE_DUMP_IN_FAULTLOG" ] - include_dirs += [ - "//base/hiviewdfx/faultloggerd/interfaces/innerkits/faultloggerd_client", - ] - - cflags_cc += [ "-Wno-gnu-zero-variadic-macro-arguments" ] } } @@ -623,11 +623,12 @@ if (!defined(ark_independent_build)) { ":libark_jsruntime_set", ] - defines = [] if (is_ohos && is_standard_system) { - external_deps = [ "faultloggerd:libfaultloggerd" ] + external_deps = [] + if (enable_dump_in_faultlog) { + external_deps += [ "faultloggerd:libfaultloggerd" ] + } if (enable_bytrace) { - defines += [ "ENABLE_BYTRACE" ] external_deps += [ "hitrace_native:hitrace_meter" ] } } @@ -647,12 +648,6 @@ if (!defined(ark_independent_build)) { ohos_shared_library("libark_jsruntime_test") { deps = [ ":libark_jsruntime_test_set" ] - defines = [] - if (is_ohos && is_standard_system && enable_bytrace) { - defines += [ "ENABLE_BYTRACE" ] - external_deps = [ "hitrace_native:hitrace_meter" ] - } - install_enable = false if (!is_mingw && !is_mac) { output_extension = "so" diff --git a/ecmascript/dfx/hprof/heap_snapshot_json_serializer.cpp b/ecmascript/dfx/hprof/heap_snapshot_json_serializer.cpp index d32e5db556d6bab79ae67a799af6bb70f5b77f49..8a3dc97b35d195f62bf61bdd884e1b2892a6fc3a 100644 --- a/ecmascript/dfx/hprof/heap_snapshot_json_serializer.cpp +++ b/ecmascript/dfx/hprof/heap_snapshot_json_serializer.cpp @@ -213,5 +213,6 @@ void HeapSnapshotJSONSerializer::WriteChunk() LOG_ECMA(ERROR) << "WriteChunk failed"; } } + stream_->EndOfStream(); } } // namespace panda::ecmascript diff --git a/ecmascript/interpreter/interpreter.h b/ecmascript/interpreter/interpreter.h index 43fb966fbd3e7014165d359a19848cd7a290b8bc..ff46d273e5262945a42ff0d268139cdc2767af79 100644 --- a/ecmascript/interpreter/interpreter.h +++ b/ecmascript/interpreter/interpreter.h @@ -50,7 +50,6 @@ public: JSHandle newTarget, size_t numArgs); static inline JSTaggedValue GeneratorReEnterInterpreter(JSThread *thread, JSHandle context); static inline void RunInternal(JSThread *thread, ConstantPool *constpool, const uint8_t *pc, JSTaggedType *sp); - static inline uint8_t ReadU8(const uint8_t *pc, uint32_t offset); static inline void InitStackFrame(JSThread *thread); static inline uint32_t FindCatchBlock(JSMethod *caller, uint32_t pc); static inline size_t GetJumpSizeAfterCall(const uint8_t *prevPc); diff --git a/ecmascript/napi/dfx_jsnapi.cpp b/ecmascript/napi/dfx_jsnapi.cpp index 1181f9d03c29d3a779bb30effd4cf2dd9e2639b6..dea319cf10b4364d2d56c8bfe41d5c7c3d6204ff 100644 --- a/ecmascript/napi/dfx_jsnapi.cpp +++ b/ecmascript/napi/dfx_jsnapi.cpp @@ -66,7 +66,6 @@ void DFXJSNApi::DumpHeapSnapshot([[maybe_unused]] EcmaVM *vm, [[maybe_unused]] i } FileDescriptorStream stream(fd); DumpHeapSnapshot(vm, dumpFormat, &stream, nullptr, isVmMode, isPrivate); - close(fd); #endif } diff --git a/ecmascript/shared_mm/shared_mm.h b/ecmascript/shared_mm/shared_mm.h index dda1b7706a6d0242a27a24d468f12da1bf6cab14..0479e9c934c1ba95039c40dcb245333c49fca77c 100644 --- a/ecmascript/shared_mm/shared_mm.h +++ b/ecmascript/shared_mm/shared_mm.h @@ -16,7 +16,7 @@ #ifndef ECMASCRIPT_SHARED_MEMORY_MANAGER_MANAGER_H #define ECMASCRIPT_SHARED_MEMORY_MANAGER_MANAGER_H -#include "ecmascript/tooling/js_pt_extractor.h" +#include "ecmascript/mem/c_containers.h" #include "libpandabase/utils/logger.h" #include "os/mutex.h" diff --git a/ecmascript/tooling/interface/file_stream.cpp b/ecmascript/tooling/interface/file_stream.cpp index e041da71b9a020c886399632f243c2181ebf8021..f7ca83291f3accb5ec6522d14e7f728828b237b7 100644 --- a/ecmascript/tooling/interface/file_stream.cpp +++ b/ecmascript/tooling/interface/file_stream.cpp @@ -27,18 +27,11 @@ FileStream::FileStream(const std::string &fileName) Initialize(fileName); } -FileStream::~FileStream() -{ - EndOfStream(); -} - void FileStream::EndOfStream() { - if (fileStream_.fail()) { - return; + if (Good()) { + fileStream_.close(); } - - fileStream_.close(); } bool FileStream::Good() @@ -93,14 +86,11 @@ bool FileStream::WriteChunk(char* data, int size) return true; } -FileDescriptorStream::~FileDescriptorStream() -{ - EndOfStream(); -} - void FileDescriptorStream::EndOfStream() { - LOG_ECMA(INFO) << "FileDescriptorStream" << fd_; + if (Good()) { + close(fd_); + } } bool FileDescriptorStream::Good() diff --git a/ecmascript/tooling/interface/file_stream.h b/ecmascript/tooling/interface/file_stream.h index b20f5176a2b8c1a2a7d8e19d57fc1e2bf0dfbe59..0962b24866cac5f2fd8bb822f86856e7855447f0 100644 --- a/ecmascript/tooling/interface/file_stream.h +++ b/ecmascript/tooling/interface/file_stream.h @@ -24,7 +24,7 @@ namespace panda::ecmascript { class FileStream : public Stream { public: FileStream(const std::string &fileName); - ~FileStream() override; + ~FileStream() override = default; void EndOfStream() override; @@ -48,11 +48,8 @@ private: class FileDescriptorStream : public Stream { public: - explicit FileDescriptorStream(int32_t fd): fd_(fd) - { - } - - ~FileDescriptorStream() override; + explicit FileDescriptorStream(int32_t fd): fd_(fd) {} + ~FileDescriptorStream() override = default; void EndOfStream() override; diff --git a/js_runtime_config.gni b/js_runtime_config.gni index b25fe98c657e0f88f1c4040de6ed17487e0eb481..440bc3441029d8c903df74ce29d19172ff17ca44 100644 --- a/js_runtime_config.gni +++ b/js_runtime_config.gni @@ -23,6 +23,7 @@ if (!defined(ark_independent_build)) { compile_llvm_online = false run_with_asan = false enable_bytrace = true +enable_dump_in_faultlog = true asan_lib_path = "/usr/lib/llvm-10/lib/clang/10.0.0/lib/linux" # For OpenHarmony build, always link with the static lib: