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