use the obvious DW_OP_const4u for 0xffff_ffff (#2154)
No point in resorting to LEB128 encoding for such constants, using the native `u32` is faster and more compact. Adds `write_u32` method to facilitate this.
This commit is contained in:
@@ -64,6 +64,10 @@ impl ExpressionWriter {
|
||||
write::Writer::write_u8(&mut self.0, b)
|
||||
}
|
||||
|
||||
pub fn write_u32(&mut self, b: u32) -> write::Result<()> {
|
||||
write::Writer::write_u32(&mut self.0, b)
|
||||
}
|
||||
|
||||
pub fn write_uleb128(&mut self, i: u64) -> write::Result<()> {
|
||||
write::Writer::write_uleb128(&mut self.0, i)
|
||||
}
|
||||
@@ -196,8 +200,8 @@ fn append_memory_deref(
|
||||
}
|
||||
writer.write_op(gimli::constants::DW_OP_deref)?;
|
||||
writer.write_op(gimli::constants::DW_OP_swap)?;
|
||||
writer.write_op(gimli::constants::DW_OP_constu)?;
|
||||
writer.write_uleb128(0xffff_ffff)?;
|
||||
writer.write_op(gimli::constants::DW_OP_const4u)?;
|
||||
writer.write_u32(0xffff_ffff)?;
|
||||
writer.write_op(gimli::constants::DW_OP_and)?;
|
||||
writer.write_op(gimli::constants::DW_OP_plus)?;
|
||||
buf.extend(writer.into_vec());
|
||||
|
||||
Reference in New Issue
Block a user