MCPcopy Create free account
hub / github.com/explodingcamera/tinywasm / emit_dropkeep

Method emit_dropkeep

crates/parser/src/visit.rs:594–620  ·  view source on GitHub ↗
(&mut self, base: StackBase, c32: u16, c64: u16, c128: u16)

Source from the content-addressed store, hash-verified

592 }
593
594 fn emit_dropkeep(&mut self, base: StackBase, c32: u16, c64: u16, c128: u16) {
595 if base.s32 == 0 && c32 == 0 && base.s64 == 0 && c64 == 0 && base.s128 == 0 && c128 == 0 {
596 return;
597 }
598
599 let fits_u8 = base.s32 <= u8::MAX as u16
600 && c32 <= u8::MAX as u16
601 && base.s64 <= u8::MAX as u16
602 && c64 <= u8::MAX as u16
603 && base.s128 <= u8::MAX as u16
604 && c128 <= u8::MAX as u16;
605
606 if fits_u8 {
607 self.instructions.push(Instruction::DropKeep {
608 base32: base.s32,
609 keep32: c32 as u8,
610 base64: base.s64,
611 keep64: c64 as u8,
612 base128: base.s128,
613 keep128: c128 as u8,
614 });
615 } else {
616 self.instructions.push(Instruction::DropKeep32(base.s32, c32));
617 self.instructions.push(Instruction::DropKeep64(base.s64, c64));
618 self.instructions.push(Instruction::DropKeep128(base.s128, c128));
619 }
620 }
621
622 fn patch_jump(&mut self, jump_ip: usize, target: usize) {
623 match &mut self.instructions[jump_ip] {

Callers 2

emit_br_table_padMethod · 0.80

Calls 1

pushMethod · 0.45

Tested by

no test coverage detected