@flanfly Only thing that remains of graph_algos is in abstract_interp
Seems you're working on data-flow esque stuff, so perhaps I'll leave that to you, especially if you add a new impl for neo (it's also apparently only used in QT currently)?
If that's alright, I won't mess with abstract_interp so we don't step on each others toes; if you're working on something else, let me know.
Also I'll rebase this branch off of bincode as though its master, in case this keeps going, so no need to delete (until it gets merged into master, that is) ;)
Anyway:
Totally removes graph_algos from core!
Also removes longstanding pointless imports field from project
re-adds to_dot impls using petgraphs version
Also, hilariously, adding this patch to disassembler (which I assumed was safe and would be a quick allocation-less gain in disassembler) causes the benchmarks to spiral out of control and use all memory on my system :sob:
diff --git a/amd64/src/architecture.rs b/amd64/src/architecture.rs
index 2d056e6..19e7e65 100644
--- a/amd64/src/architecture.rs
+++ b/amd64/src/architecture.rs
@@ -55,14 +55,16 @@ impl Architecture for Amd64 {
}
fn decode(reg: &Region, start: u64, cfg: &Self::Configuration) -> Result<Match<Self>> {
+ const MAX: usize = 16;
let data = reg.iter();
- let mut buf: Vec<u8> = vec![];
+ let mut buf: [u8; MAX] = [0; MAX];
let mut i = data.seek(start);
let p = start;
-
+ let mut len = 0;
while let Some(Some(b)) = i.next() {
- buf.push(b);
- if buf.len() == 15 {
+ buf[len] = b;
+ len += 1;
+ if len == MAX {
break;
}
}
Anyway, I think I want to work on the disassembler because:
I think there could be some easy perf gains (ostensibly like above, I suspect that's some weird compiler/benchmark bug?)
@flanfly Only thing that remains of graph_algos is in
abstract_interp
Seems you're working on data-flow esque stuff, so perhaps I'll leave that to you, especially if you add a new impl for neo (it's also apparently only used in QT currently)?
If that's alright, I won't mess with abstract_interp so we don't step on each others toes; if you're working on something else, let me know.
Also I'll rebase this branch off of bincode as though its master, in case this keeps going, so no need to delete (until it gets merged into master, that is) ;)
Anyway:
to_dot
impls using petgraphs versionAlso, hilariously, adding this patch to disassembler (which I assumed was safe and would be a quick allocation-less gain in disassembler) causes the benchmarks to spiral out of control and use all memory on my system :sob:
Anyway, I think I want to work on the disassembler because: