summaryrefslogtreecommitdiff
path: root/binaryninjacore.h
diff options
context:
space:
mode:
authorMark Rowe <mark@vector35.com>2026-02-25 19:45:00 -0800
committerMark Rowe <mark@vector35.com>2026-03-16 15:47:00 -0700
commit25213a836b1423cbc1aeef1f23aebc2167154e56 (patch)
tree84bf36f1ba46de9419cfbd1411712192c1d3fb12 /binaryninjacore.h
parent8f6762f742ed48d7d8400f2d1b4bf4774d7b0fd1 (diff)
Represent operand lists and label maps more efficiently within IL instructions
Rather than using chains of `UNDEF` instructions, the contents of these lists are in a vector alongside the instructions. The instruction itself stores the entry count and offset into this second vector at which the associated items can be found. This improves analysis performance by around 2% and decreases memory usage by around 5%.
Diffstat (limited to 'binaryninjacore.h')
-rw-r--r--binaryninjacore.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/binaryninjacore.h b/binaryninjacore.h
index 80694ce2..0f2e0a60 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -6445,6 +6445,8 @@ extern "C"
BINARYNINJACOREAPI uint64_t* BNLowLevelILGetOperandList(
BNLowLevelILFunction* func, size_t expr, size_t operand, size_t* count);
BINARYNINJACOREAPI void BNLowLevelILFreeOperandList(uint64_t* operands);
+ BINARYNINJACOREAPI const uint64_t* BNLowLevelILGetOperandPointer(
+ BNLowLevelILFunction* func, size_t offset);
BINARYNINJACOREAPI size_t BNCacheLowLevelILPossibleValueSet(BNLowLevelILFunction* func, BNPossibleValueSet* pvs);
BINARYNINJACOREAPI BNPossibleValueSet BNGetCachedLowLevelILPossibleValueSet(BNLowLevelILFunction* func, size_t idx);
@@ -6602,6 +6604,8 @@ extern "C"
BINARYNINJACOREAPI uint64_t* BNMediumLevelILGetOperandList(
BNMediumLevelILFunction* func, size_t expr, size_t operand, size_t* count);
BINARYNINJACOREAPI void BNMediumLevelILFreeOperandList(uint64_t* operands);
+ BINARYNINJACOREAPI const uint64_t* BNMediumLevelILGetOperandPointer(
+ BNMediumLevelILFunction* func, size_t offset);
BINARYNINJACOREAPI size_t BNCacheMediumLevelILPossibleValueSet(BNMediumLevelILFunction* func, BNPossibleValueSet* pvs);
BINARYNINJACOREAPI BNPossibleValueSet BNGetCachedMediumLevelILPossibleValueSet(BNMediumLevelILFunction* func, size_t idx);
@@ -6763,6 +6767,8 @@ extern "C"
BINARYNINJACOREAPI uint64_t* BNHighLevelILGetOperandList(
BNHighLevelILFunction* func, size_t expr, size_t operand, size_t* count);
BINARYNINJACOREAPI void BNHighLevelILFreeOperandList(uint64_t* operands);
+ BINARYNINJACOREAPI const uint64_t* BNHighLevelILGetOperandPointer(
+ BNHighLevelILFunction* func, size_t offset);
BINARYNINJACOREAPI size_t BNCacheHighLevelILPossibleValueSet(BNHighLevelILFunction* func, BNPossibleValueSet* pvs);
BINARYNINJACOREAPI BNPossibleValueSet BNGetCachedHighLevelILPossibleValueSet(BNHighLevelILFunction* func, size_t idx);