arkcompiler_ets_runtime/ecmascript/compiler/stub_compiler.h
wuzhefeng 6002abbef1 Implement debug information framework (Part-3)
To faciliate aot debuggging, we need to provide the ability of code
commenting, so we will add api of adding debug-information to our gate
compilation framework and pass the information to LLVM-IR. At last, the
generated machine code can be associated with specific code comments.

Issue: https://gitee.com/openharmony/arkcompiler_ets_runtime/issues/I6VRHQ

Signed-off-by: wuzhefeng <wuzhefeng1@huawei.com>
Change-Id: I6a1eef5588231f3aa31cc6b2efea9667d0eda929
2023-04-26 14:19:53 +08:00

63 lines
1.9 KiB
C++

/*
* Copyright (c) 2021 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef ECMASCRIPT_COMPILER_STUB_COMPILER_H
#define ECMASCRIPT_COMPILER_STUB_COMPILER_H
#include <cstring>
#include "ecmascript/compiler/compiler_log.h"
#include "ecmascript/compiler/llvm_ir_builder.h"
namespace panda::ecmascript::kungfu {
class StubCompiler {
public:
StubCompiler(std::string &triple, std::string &filePath, size_t optLevel, size_t relocMode,
CompilerLog *log, MethodLogList *logList)
: triple_(triple),
filePath_(filePath),
optLevel_(optLevel),
relocMode_(relocMode),
log_(log),
logList_(logList)
{
}
~StubCompiler() = default;
bool BuildStubModuleAndSave() const;
CompilerLog *GetLog() const
{
return log_;
}
MethodLogList *GetLogList() const
{
return logList_;
}
private:
void RunPipeline(LLVMModule *module, NativeAreaAllocator *allocator) const;
void InitializeCS() const;
std::string triple_ {};
std::string filePath_ {};
size_t optLevel_ {3}; // 3 : default backend optimization level
size_t relocMode_ {2}; // 2 : default relocation mode-- PIC
CompilerLog *log_ {nullptr};
MethodLogList *logList_ {nullptr};
};
} // namespace panda::ecmascript::kungfu
#endif // ECMASCRIPT_COMPILER_STUB_COMPILER_H