mirror of
https://github.com/JakeHillion/object-introspection.git
synced 2024-09-19 11:09:05 +01:00
remove oil v1 leftovers
This commit is contained in:
parent
6f623e95a4
commit
6e1635ce1e
@ -1258,7 +1258,6 @@ void CodeGen::generate(
|
|||||||
FuncGen::DefineEncodeData(code);
|
FuncGen::DefineEncodeData(code);
|
||||||
FuncGen::DefineEncodeDataSize(code);
|
FuncGen::DefineEncodeDataSize(code);
|
||||||
FuncGen::DefineStoreData(code);
|
FuncGen::DefineStoreData(code);
|
||||||
FuncGen::DefineAddData(code);
|
|
||||||
}
|
}
|
||||||
FuncGen::DeclareGetContainer(code);
|
FuncGen::DeclareGetContainer(code);
|
||||||
|
|
||||||
|
@ -142,12 +142,6 @@ void FuncGen::DeclareGetSize(std::string& testCode, const std::string& type) {
|
|||||||
testCode.append(fmt.str());
|
testCode.append(fmt.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void FuncGen::DeclareTopLevelGetSize(std::string& testCode,
|
|
||||||
const std::string& type) {
|
|
||||||
boost::format fmt = boost::format("void getSizeType(const %1% &t);\n") % type;
|
|
||||||
testCode.append(fmt.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void FuncGen::DeclareExterns(std::string& code) {
|
void FuncGen::DeclareExterns(std::string& code) {
|
||||||
constexpr std::string_view vars = R"(
|
constexpr std::string_view vars = R"(
|
||||||
extern uint8_t* dataBase;
|
extern uint8_t* dataBase;
|
||||||
@ -202,9 +196,6 @@ void __jlogptr(uintptr_t ptr) {
|
|||||||
void FuncGen::DeclareStoreData(std::string& testCode) {
|
void FuncGen::DeclareStoreData(std::string& testCode) {
|
||||||
testCode.append("void StoreData(uintptr_t data, size_t& dataSegOffset);\n");
|
testCode.append("void StoreData(uintptr_t data, size_t& dataSegOffset);\n");
|
||||||
}
|
}
|
||||||
void FuncGen::DeclareAddData(std::string& testCode) {
|
|
||||||
testCode.append("void AddData(uint64_t data, size_t& dataSegOffset);\n");
|
|
||||||
}
|
|
||||||
void FuncGen::DeclareEncodeData(std::string& testCode) {
|
void FuncGen::DeclareEncodeData(std::string& testCode) {
|
||||||
testCode.append("size_t EncodeVarint(uint64_t val, uint8_t* buf);\n");
|
testCode.append("size_t EncodeVarint(uint64_t val, uint8_t* buf);\n");
|
||||||
}
|
}
|
||||||
@ -260,33 +251,6 @@ void FuncGen::DefineStoreData(std::string& testCode) {
|
|||||||
testCode.append(func);
|
testCode.append(func);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FuncGen::DefineAddData(std::string& testCode) {
|
|
||||||
std::string func = R"(
|
|
||||||
void AddData(uint64_t data, size_t& output) {
|
|
||||||
output += data;
|
|
||||||
}
|
|
||||||
)";
|
|
||||||
|
|
||||||
testCode.append(func);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FuncGen::DefineTopLevelGetObjectSize(std::string& testCode,
|
|
||||||
const std::string& rawType,
|
|
||||||
const std::string& linkageName) {
|
|
||||||
std::string func = R"(
|
|
||||||
/* RawType: %1% */
|
|
||||||
extern "C" int %2%(const OIInternal::__ROOT_TYPE__* ObjectAddr, size_t* ObjectSize)
|
|
||||||
{
|
|
||||||
*ObjectSize = 0;
|
|
||||||
OIInternal::getSizeType(*ObjectAddr, *ObjectSize);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
)";
|
|
||||||
|
|
||||||
boost::format fmt = boost::format(func) % rawType % linkageName;
|
|
||||||
testCode.append(fmt.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void FuncGen::DefineTopLevelIntrospect(std::string& code,
|
void FuncGen::DefineTopLevelIntrospect(std::string& code,
|
||||||
const std::string& type) {
|
const std::string& type) {
|
||||||
std::string func = R"(
|
std::string func = R"(
|
||||||
@ -528,27 +492,6 @@ const std::array<std::string_view, )";
|
|||||||
code += "#pragma GCC diagnostic pop\n";
|
code += "#pragma GCC diagnostic pop\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
void FuncGen::DefineTopLevelGetSizeRefRet(std::string& testCode,
|
|
||||||
const std::string& rawType) {
|
|
||||||
std::string func = R"(
|
|
||||||
#pragma GCC diagnostic push
|
|
||||||
#pragma GCC diagnostic ignored "-Wunknown-attributes"
|
|
||||||
/* Raw Type: %1% */
|
|
||||||
size_t __attribute__((used, retain)) getSize(const OIInternal::__ROOT_TYPE__& t)
|
|
||||||
#pragma GCC diagnostic pop
|
|
||||||
{
|
|
||||||
pointers.initialize();
|
|
||||||
size_t ret = 0;
|
|
||||||
pointers.add((uintptr_t)&t);
|
|
||||||
OIInternal::getSizeType(t, ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
)";
|
|
||||||
|
|
||||||
boost::format fmt = boost::format(func) % rawType;
|
|
||||||
testCode.append(fmt.str());
|
|
||||||
}
|
|
||||||
|
|
||||||
void FuncGen::DefineTopLevelGetSizeSmartPtr(std::string& testCode,
|
void FuncGen::DefineTopLevelGetSizeSmartPtr(std::string& testCode,
|
||||||
const std::string& rawType,
|
const std::string& rawType,
|
||||||
FeatureSet features) {
|
FeatureSet features) {
|
||||||
|
11
oi/FuncGen.h
11
oi/FuncGen.h
@ -35,9 +35,6 @@ class FuncGen {
|
|||||||
static void DeclareStoreData(std::string& testCode);
|
static void DeclareStoreData(std::string& testCode);
|
||||||
static void DefineStoreData(std::string& testCode);
|
static void DefineStoreData(std::string& testCode);
|
||||||
|
|
||||||
static void DeclareAddData(std::string& testCode);
|
|
||||||
static void DefineAddData(std::string& testCode);
|
|
||||||
|
|
||||||
static void DeclareEncodeData(std::string& testCode);
|
static void DeclareEncodeData(std::string& testCode);
|
||||||
static void DefineEncodeData(std::string& testCode);
|
static void DefineEncodeData(std::string& testCode);
|
||||||
|
|
||||||
@ -55,11 +52,6 @@ class FuncGen {
|
|||||||
|
|
||||||
static void DeclareGetSize(std::string& testCode, const std::string& type);
|
static void DeclareGetSize(std::string& testCode, const std::string& type);
|
||||||
|
|
||||||
static void DeclareTopLevelGetSize(std::string& testCode,
|
|
||||||
const std::string& type);
|
|
||||||
static void DefineTopLevelGetObjectSize(std::string& testCode,
|
|
||||||
const std::string& type,
|
|
||||||
const std::string& linkageName);
|
|
||||||
static void DefineTopLevelIntrospect(std::string& code,
|
static void DefineTopLevelIntrospect(std::string& code,
|
||||||
const std::string& type);
|
const std::string& type);
|
||||||
static void DefineTopLevelIntrospectNamed(std::string& code,
|
static void DefineTopLevelIntrospectNamed(std::string& code,
|
||||||
@ -80,9 +72,6 @@ class FuncGen {
|
|||||||
size_t exclusiveSize,
|
size_t exclusiveSize,
|
||||||
std::span<const std::string_view> typeNames);
|
std::span<const std::string_view> typeNames);
|
||||||
|
|
||||||
static void DefineTopLevelGetSizeRefRet(std::string& testCode,
|
|
||||||
const std::string& type);
|
|
||||||
|
|
||||||
static void DefineTopLevelGetSizeSmartPtr(std::string& testCode,
|
static void DefineTopLevelGetSizeSmartPtr(std::string& testCode,
|
||||||
const std::string& rawType,
|
const std::string& rawType,
|
||||||
FeatureSet features);
|
FeatureSet features);
|
||||||
|
@ -3025,20 +3025,11 @@ bool OICodeGen::generateJitCode(std::string& code) {
|
|||||||
code.append(">\n");
|
code.append(">\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
code.append("// storage macro definitions -----\n");
|
code.append(R"(
|
||||||
if (config.useDataSegment) {
|
// storage macro definitions -----
|
||||||
code.append(R"(
|
#define SAVE_SIZE(val)
|
||||||
#define SAVE_SIZE(val)
|
#define SAVE_DATA(val) StoreData(val, returnArg)
|
||||||
#define SAVE_DATA(val) StoreData(val, returnArg)
|
)");
|
||||||
)");
|
|
||||||
} else {
|
|
||||||
code.append(R"(
|
|
||||||
#define SAVE_SIZE(val) AddData(val, returnArg)
|
|
||||||
#define SAVE_DATA(val)
|
|
||||||
#define JLOG(str)
|
|
||||||
#define JLOGPTR(ptr)
|
|
||||||
)");
|
|
||||||
}
|
|
||||||
|
|
||||||
FuncGen::DefineJitLog(code, config.features);
|
FuncGen::DefineJitLog(code, config.features);
|
||||||
|
|
||||||
@ -3240,16 +3231,9 @@ bool OICodeGen::generateJitCode(std::string& code) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.useDataSegment || feature(Feature::ChaseRawPointers)) {
|
funcGen.DeclareStoreData(functionsCode);
|
||||||
funcGen.DeclareStoreData(functionsCode);
|
funcGen.DeclareEncodeData(functionsCode);
|
||||||
}
|
funcGen.DeclareEncodeDataSize(functionsCode);
|
||||||
|
|
||||||
if (config.useDataSegment) {
|
|
||||||
funcGen.DeclareEncodeData(functionsCode);
|
|
||||||
funcGen.DeclareEncodeDataSize(functionsCode);
|
|
||||||
} else {
|
|
||||||
funcGen.DeclareAddData(functionsCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!funcGen.DefineGetSizeFuncs(functionsCode, containerTypesFuncDef,
|
if (!funcGen.DefineGetSizeFuncs(functionsCode, containerTypesFuncDef,
|
||||||
config.features)) {
|
config.features)) {
|
||||||
@ -3296,13 +3280,9 @@ bool OICodeGen::generateJitCode(std::string& code) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.useDataSegment) {
|
funcGen.DefineStoreData(functionsCode);
|
||||||
funcGen.DefineStoreData(functionsCode);
|
funcGen.DefineEncodeData(functionsCode);
|
||||||
funcGen.DefineEncodeData(functionsCode);
|
funcGen.DefineEncodeDataSize(functionsCode);
|
||||||
funcGen.DefineEncodeDataSize(functionsCode);
|
|
||||||
} else {
|
|
||||||
funcGen.DefineAddData(functionsCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (auto& structType : structDefType) {
|
for (auto& structType : structDefType) {
|
||||||
// Don't generate member offset asserts for unions since we pad them out
|
// Don't generate member offset asserts for unions since we pad them out
|
||||||
@ -3345,23 +3325,14 @@ bool OICodeGen::generateJitCode(std::string& code) {
|
|||||||
/* Start function definitions. First define top level func for root object
|
/* Start function definitions. First define top level func for root object
|
||||||
*/
|
*/
|
||||||
auto rawTypeName = drgn_utils::typeToName(type);
|
auto rawTypeName = drgn_utils::typeToName(type);
|
||||||
if (config.useDataSegment) {
|
if (rootTypeStr.starts_with("unique_ptr") ||
|
||||||
if (rootTypeStr.starts_with("unique_ptr") ||
|
rootTypeStr.starts_with("LowPtr") ||
|
||||||
rootTypeStr.starts_with("LowPtr") ||
|
rootTypeStr.starts_with("shared_ptr")) {
|
||||||
rootTypeStr.starts_with("shared_ptr")) {
|
funcGen.DefineTopLevelGetSizeSmartPtr(functionsCode, rawTypeName,
|
||||||
funcGen.DefineTopLevelGetSizeSmartPtr(functionsCode, rawTypeName,
|
config.features);
|
||||||
config.features);
|
|
||||||
} else {
|
|
||||||
funcGen.DefineTopLevelGetSizeRef(functionsCode, rawTypeName,
|
|
||||||
config.features);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (linkageName.empty()) {
|
funcGen.DefineTopLevelGetSizeRef(functionsCode, rawTypeName,
|
||||||
funcGen.DefineTopLevelGetSizeRefRet(functionsCode, rawTypeName);
|
config.features);
|
||||||
} else {
|
|
||||||
funcGen.DefineTopLevelGetObjectSize(functionsCode, rawTypeName,
|
|
||||||
linkageName);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +65,6 @@ class OICodeGen {
|
|||||||
bool topLevel = false;
|
bool topLevel = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
bool useDataSegment;
|
|
||||||
FeatureSet features;
|
FeatureSet features;
|
||||||
std::set<std::filesystem::path> containerConfigPaths;
|
std::set<std::filesystem::path> containerConfigPaths;
|
||||||
std::set<std::string> defaultHeaders;
|
std::set<std::string> defaultHeaders;
|
||||||
@ -126,9 +125,6 @@ class OICodeGen {
|
|||||||
|
|
||||||
drgn_qualified_type getRootType();
|
drgn_qualified_type getRootType();
|
||||||
void setRootType(drgn_qualified_type rt);
|
void setRootType(drgn_qualified_type rt);
|
||||||
void setLinkageName(std::string name) {
|
|
||||||
linkageName = name;
|
|
||||||
};
|
|
||||||
TypeHierarchy getTypeHierarchy();
|
TypeHierarchy getTypeHierarchy();
|
||||||
std::map<std::string, PaddingInfo> getPaddingInfo();
|
std::map<std::string, PaddingInfo> getPaddingInfo();
|
||||||
|
|
||||||
@ -157,7 +153,6 @@ class OICodeGen {
|
|||||||
using SortedTypeDefMap = std::vector<std::pair<drgn_type*, drgn_type*>>;
|
using SortedTypeDefMap = std::vector<std::pair<drgn_type*, drgn_type*>>;
|
||||||
|
|
||||||
std::string rootTypeStr;
|
std::string rootTypeStr;
|
||||||
std::string linkageName;
|
|
||||||
std::map<drgn_type*, std::string> unnamedUnion;
|
std::map<drgn_type*, std::string> unnamedUnion;
|
||||||
std::map<std::string, size_t> sizeMap;
|
std::map<std::string, size_t> sizeMap;
|
||||||
std::map<drgn_type*, ContainerTypeMapEntry> containerTypeMapDrgn;
|
std::map<drgn_type*, ContainerTypeMapEntry> containerTypeMapDrgn;
|
||||||
|
@ -666,7 +666,6 @@ int main(int argc, char* argv[]) {
|
|||||||
OICompiler::Config compilerConfig{};
|
OICompiler::Config compilerConfig{};
|
||||||
|
|
||||||
OICodeGen::Config codeGenConfig;
|
OICodeGen::Config codeGenConfig;
|
||||||
codeGenConfig.useDataSegment = true;
|
|
||||||
codeGenConfig.features = {}; // fill in after processing the config file
|
codeGenConfig.features = {}; // fill in after processing the config file
|
||||||
|
|
||||||
TreeBuilder::Config tbConfig{
|
TreeBuilder::Config tbConfig{
|
||||||
|
Loading…
Reference in New Issue
Block a user