diff --git a/src/ijvm/binread.rs b/src/ijvm/binread.rs index f8e83c0..b1ea0a7 100644 --- a/src/ijvm/binread.rs +++ b/src/ijvm/binread.rs @@ -44,14 +44,14 @@ impl BinRead for T { } fn read_u16(&mut self) -> Result { - let a = self.read_u8()? as u16; - let b = self.read_u8()? as u16; + let a = u16::from(self.read_u8()?); + let b = u16::from( self.read_u8()?); Ok(a << 8 | b) } fn read_u32(&mut self) -> Result { - let a = self.read_u16()? as u32; - let b = self.read_u16()? as u32; + let a = u32::from(self.read_u16()?); + let b = u32::from( self.read_u16()?); Ok(a << 16 | b) } fn read_i8(&mut self) -> Result { @@ -59,14 +59,14 @@ impl BinRead for T { } fn read_i16(&mut self) -> Result { - let a = self.read_u8()? as i16; - let b = self.read_u8()? as i16; + let a = i16::from(self.read_u8()?); + let b = i16::from(self.read_u8()?); Ok((a << 8 | b) as i16) } fn read_i32(&mut self) -> Result { - let a = self.read_u16()? as i32; - let b = self.read_u16()? as i32; + let a = i32::from(self.read_u16()?); + let b = i32::from(self.read_u16()?); Ok(a << 16 | b) } diff --git a/src/ijvm/block.rs b/src/ijvm/block.rs index 1d6a88f..2ac677b 100644 --- a/src/ijvm/block.rs +++ b/src/ijvm/block.rs @@ -13,7 +13,7 @@ pub struct Block { impl Block { pub fn new(origin: u32, source: &[u8]) -> Block { Block { - origin: origin, + origin, length: source.len(), pointer: 0, source: source.to_owned() @@ -52,15 +52,15 @@ impl BinReadable for Block { } let byte = self.source[self.pointer]; self.pointer += 1; - return Ok(byte) + Ok(byte) } fn len(&self) -> usize { - return self.source.len() + self.source.len() } fn cur(&self) -> usize { - return self.pointer; + self.pointer } fn slice(&mut self, len: usize) -> &[u8] { diff --git a/src/ijvm/frame.rs b/src/ijvm/frame.rs index 718f674..52c1c01 100644 --- a/src/ijvm/frame.rs +++ b/src/ijvm/frame.rs @@ -12,7 +12,7 @@ impl Frame { if cfg!(feature="debug:frame") { println!("Initializing frame of len {}", num_locals); } - return Frame { + Frame { stack: Stack::new(), locals: vec![0; num_locals+1], } @@ -22,7 +22,7 @@ impl Frame { if offset >= self.locals.len() { return Err("Local variable out of range"); } - return Ok(self.locals[offset]) + Ok(self.locals[offset]) } pub fn set(&mut self, offset: usize, val: i32) -> Result<()> { @@ -30,6 +30,6 @@ impl Frame { return Err("Local variable out of range"); } self.locals[offset] = val; - return Ok(()); + Ok(()) } } \ No newline at end of file diff --git a/src/ijvm/ijvmreader.rs b/src/ijvm/ijvmreader.rs index e227282..d4e58fb 100644 --- a/src/ijvm/ijvmreader.rs +++ b/src/ijvm/ijvmreader.rs @@ -29,15 +29,15 @@ impl BinReadable for IJVMReader { } let byte = self.source[self.pointer]; self.pointer += 1; - return Ok(byte) + Ok(byte) } fn len(&self) -> usize { - return self.source.len() + self.source.len() } fn cur(&self) -> usize { - return self.pointer; + self.pointer } fn slice(&mut self, len: usize) -> &[u8] { diff --git a/src/ijvm/machine.rs b/src/ijvm/machine.rs index acb57af..27295f1 100644 --- a/src/ijvm/machine.rs +++ b/src/ijvm/machine.rs @@ -10,7 +10,7 @@ use ijvm::pool::Pool; use ijvm::netstack::NetStack; use ijvm::Result; -const MAGIC_HEADER:u32 = 0x1deadfad; +const MAGIC_HEADER:u32 = 0x1DEA_DFAD; const ANTI_BS_SIZE:usize = 0xFFFF; pub struct Machine { @@ -25,8 +25,8 @@ impl Machine { pub fn new(pool: Pool, block: Block) -> Machine{ Machine { wide: false, - pool: pool, - block: block, + pool, + block, frame: vec![Frame::new(ANTI_BS_SIZE)], net: NetStack::new(), } @@ -49,7 +49,7 @@ impl Machine { let pool = Pool::new(constants)?; - return Ok(Machine::new(pool, text)); + Ok(Machine::new(pool, text)) } pub fn step(&mut self) -> Result<()> { @@ -74,19 +74,19 @@ impl Machine { } pub fn has_step(&self) -> bool { - return self.block.has_i8(); + self.block.has_i8() } pub fn get_program_counter(&self) -> usize { - return self.block.cur() + self.block.cur() } pub fn cur_frame(&mut self) -> &mut Frame { - return self.frame.last_mut().unwrap(); + self.frame.last_mut().unwrap() } pub fn cur_stack(&mut self) -> &mut Stack { - return &mut self.cur_frame().stack; + &mut self.cur_frame().stack } // pub fn get_stack_pointer(&self) -> usize { diff --git a/src/ijvm/netstack.rs b/src/ijvm/netstack.rs index cf55c3f..d2a2324 100644 --- a/src/ijvm/netstack.rs +++ b/src/ijvm/netstack.rs @@ -26,7 +26,7 @@ impl NetStack { Err(_) => return Err("Failed to open connection"), }; - return match listener.accept() { + match listener.accept() { Ok((sock, _)) => { self.stream = Some(sock); Ok(()) @@ -40,7 +40,7 @@ impl NetStack { let h1 = (host & (0xFF << 24)) >> 24 as u8; let h2 = (host & (0xFF << 16)) >> 16 as u8; let h3 = (host & (0xFF << 8)) >> 8 as u8; - let h4 = (host & (0xFF << 0)) >> 0 as u8; + let h4 = (host & 0xFF) >> 0 as u8; let addr: String = format!("{}.{}.{}.{}:{}", h1, h2, h3, h4, port); if let Ok(stream) = TcpStream::connect(addr) { @@ -52,7 +52,7 @@ impl NetStack { #[cfg(feature = "bonus:network")] pub fn close(&mut self) -> Result<()> { - if let None = self.stream { + if self.stream.is_none() { return Err("Cannot close a nonexistent socket") } @@ -62,7 +62,7 @@ impl NetStack { #[cfg(feature = "bonus:network")] pub fn read_byte(&mut self) -> Result { - return match self.stream { + match self.stream { Some(ref mut stream) => { match stream.bytes().next().and_then(|r| r.ok()) { Some(i) => Ok(i as i8), @@ -75,7 +75,7 @@ impl NetStack { #[cfg(feature = "bonus:network")] pub fn write_byte(&mut self, byte: u8) -> Result<()> { - return match self.stream { + match self.stream { Some(ref mut stream) => { let buf = [byte]; match stream.write(&buf) { diff --git a/src/ijvm/ops.rs b/src/ijvm/ops.rs index ce3e9bd..271e7a6 100644 --- a/src/ijvm/ops.rs +++ b/src/ijvm/ops.rs @@ -64,9 +64,9 @@ fn nop(_: &mut Machine) -> Result<()> { fn bipush(machine: &mut Machine) -> Result<()> { let val = match machine.block.read_i8() { - Ok(a) => a, + Ok(a) => i32::from(a), Err(_) => return Err("Expected argument"), - } as i32; + }; machine.cur_stack().push(val); Ok(()) } @@ -110,15 +110,15 @@ fn _in(machine: &mut Machine) -> Result<()> { .next() .and_then(|r| r.ok()); let val = match char { - None => 0 as i32, - Some(i) => i as i32 + None => 0i32, + Some(i) => i32::from(i) }; machine.cur_stack().push(val); Ok(()) } fn goto(machine: &mut Machine) -> Result<()> { - let offset = machine.block.read_i16()? as i32 - JUMP_OFFSET; + let offset = i32::from(machine.block.read_i16()?) - JUMP_OFFSET; machine.block.jump(offset) } @@ -127,7 +127,7 @@ fn halt(_: &mut Machine) -> Result<()> { } fn ifeq(machine: &mut Machine) -> Result<()> { - let offset = machine.block.read_i16()? as i32 - JUMP_OFFSET; + let offset = i32::from(machine.block.read_i16()?) - JUMP_OFFSET; if machine.cur_stack().pop()? == 0 { return machine.block.jump(offset) } @@ -135,7 +135,7 @@ fn ifeq(machine: &mut Machine) -> Result<()> { } fn iflt(machine: &mut Machine) -> Result<()> { - let offset = machine.block.read_i16()? as i32 - JUMP_OFFSET; + let offset = i32::from(machine.block.read_i16()?) - JUMP_OFFSET; if machine.cur_stack().pop()? < 0 { return machine.block.jump(offset) } @@ -143,7 +143,7 @@ fn iflt(machine: &mut Machine) -> Result<()> { } fn if_icmpeq(machine: &mut Machine) -> Result<()> { - let offset = machine.block.read_i16()? as i32 - JUMP_OFFSET; + let offset = i32::from(machine.block.read_i16()?) - JUMP_OFFSET; if machine.cur_stack().pop()? == machine.cur_stack().pop()? { return machine.block.jump(offset) } @@ -199,9 +199,9 @@ fn istore(machine: &mut Machine) -> Result<()> { fn iinc(machine: &mut Machine) -> Result<()> { let a = machine.read_index()?; - let b = machine.block.read_i8()?; + let b = i32::from(machine.block.read_i8()?); let val = machine.cur_frame().get(a)?; - machine.cur_frame().set(a, val + b as i32) + machine.cur_frame().set(a, val + b) } fn invokevirtual(machine: &mut Machine) -> Result<()> { @@ -250,9 +250,9 @@ fn slp(machine: &mut Machine) -> Result<()> { use std::time; use std::thread; let val = match machine.block.read_u8() { - Ok(a) => a, + Ok(a) => u64::from(a), Err(_) => return Err("Expected argument"), - } as u64; + }; let slpdur = time::Duration::from_millis(val*100); thread::sleep(slpdur); Ok(()) @@ -273,7 +273,7 @@ fn netconnect(machine: &mut Machine) -> Result<()> { #[cfg(feature = "bonus:network")] fn netin(machine: &mut Machine) -> Result<()> { - let byte = machine.net.read_byte()? as i32; + let byte = i32::from(machine.net.read_byte()?); machine.cur_stack().push(byte); Ok(()) }