================ @@ -207,15 +280,23 @@ void BoltAddressTranslation::parseMaps(std::vector<uint64_t> &HotFuncs, const uint64_t OutputAddress = PrevAddress + OutputDelta; const uint64_t OutputOffset = OutputAddress - Address; PrevAddress = OutputAddress; - const int64_t InputDelta = DE.getSLEB128(&Offset, &Err); - InputOffset += InputDelta; + int64_t InputDelta = 0; + if (J < EqualElems) { + InputOffset = (OutputOffset << 1) | (*BEBitMask)[J]; + } else { + InputDelta = DE.getSLEB128(&Offset, &Err); + InputOffset += InputDelta; + } Map.insert(std::pair<uint32_t, uint32_t>(OutputOffset, InputOffset)); LLVM_DEBUG( dbgs() << formatv("{0:x} -> {1:x} ({2}/{3}b -> {4}/{5}b), {6:x}\n", OutputOffset, InputOffset, OutputDelta, - encodeULEB128(OutputDelta, nulls()), InputDelta, - encodeSLEB128(InputDelta, nulls()), OutputAddress)); + getULEB128Size(OutputDelta), InputDelta, + (J < EqualElems) ? 0 : getSLEB128Size(InputDelta), + OutputAddress)); } + if (BEBitMask) + delete BEBitMask; ---------------- dcci wrote:
Can you make this automatically memory managed? https://github.com/llvm/llvm-project/pull/76905 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits