MCPcopy Create free account
hub / github.com/cretz/stackparam / read_constant_pool

Method read_constant_pool

src/bytecode/io/reader.rs:61–90  ·  view source on GitHub ↗
(reader: &mut BlockReader, _: &ClassFragment)

Source from the content-addressed store, hash-verified

59 }
60
61 fn read_constant_pool(reader: &mut BlockReader, _: &ClassFragment) -> Result<ClassFragment, Error> {
62 match reader.read_u16() {
63 Ok(cp_len) => {
64 let mut constants: Vec<Constant> = vec![ Constant::Placeholder ];
65
66 for _ in 1..cp_len {
67 if constants.len() < cp_len as usize {
68 match ClassReader::read_constant(reader) {
69 Ok(constant) => {
70 let constant_size = constant.cp_size();
71
72 constants.push(constant);
73
74 for _ in 1..constant_size {
75 constants.push(Constant::Placeholder);
76 }
77 },
78 Err(err) => return Err(err)
79 }
80 }
81 }
82
83 Ok(ClassFragment {
84 constant_pool: Some(ConstantPool::new(constants)),
85 ..Default::default()
86 })
87 },
88 Err(err) => Err(err)
89 }
90 }
91
92 fn read_constant(reader: &mut BlockReader) -> Result<Constant, Error> {
93 let tag = reader.read_u8();

Callers

nothing calls this directly

Calls 3

read_u16Method · 0.80
lenMethod · 0.80
cp_sizeMethod · 0.80

Tested by

no test coverage detected