remove unnecessary cloning of SourcePosition, reduce SourcePosition size. clean, format

This commit is contained in:
2020-10-06 23:12:11 +02:00
parent 91573140a4
commit 33ec1461e4
39 changed files with 207 additions and 206 deletions
+5 -5
View File
@@ -2,16 +2,16 @@ use std::ops::Rem;
use num_traits::PrimInt;
use crsn::asm::data::{Rd, Wr};
use crsn::asm::instr::Cond;
use crsn::module::{EvalRes, OpTrait};
use crsn::runtime::fault::Fault;
use crsn::runtime::run_thread::{state::RunState, ThreadInfo};
use crsn::sexp;
use crsn::sexp::Sexp;
use crsn::utils::A;
use crate::defs::ArithOp;
use crsn::sexp::Sexp;
use crsn::sexp;
use crsn::utils::A;
use crsn::asm::data::{Rd, Wr};
impl OpTrait for ArithOp {
fn execute(&self, _ti: &ThreadInfo, state: &mut RunState) -> Result<EvalRes, Fault> {
@@ -238,7 +238,7 @@ impl OpTrait for ArithOp {
}
}
fn to_sexp_2_or_3(name: &str, dst : &Wr, a: &Rd, b: &Rd) -> Sexp {
fn to_sexp_2_or_3(name: &str, dst: &Wr, a: &Rd, b: &Rd) -> Sexp {
if &dst.as_rd() == a {
sexp::list(&[A(name), A(dst), A(b)])
} else {
+1 -1
View File
@@ -22,7 +22,7 @@ impl CrsnExtension for ArithOps {
"arith"
}
fn parse_op<'a>(&self, pos: SourcePosition, keyword: &str, args: TokenParser<'a>) -> Result<ParseRes<'a, OpKind>, CrsnError> {
fn parse_op<'a>(&self, pos: &SourcePosition, keyword: &str, args: TokenParser<'a>) -> Result<ParseRes<'a, OpKind>, CrsnError> {
parse::parse(pos, keyword, args)
}
}
+18 -18
View File
@@ -3,11 +3,11 @@ use crsn::asm::error::CrsnError;
use crsn::asm::instr::op::OpKind;
use crsn::asm::parse::arg_parser::TokenParser;
use crsn::module::ParseRes;
use crate::defs::ArithOp;
use crsn::sexp::SourcePosition;
pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParser<'a>) -> Result<ParseRes<'a, OpKind>, CrsnError> {
use crate::defs::ArithOp;
pub(crate) fn parse<'a>(pos: &SourcePosition, keyword: &str, mut args: TokenParser<'a>) -> Result<ParseRes<'a, OpKind>, CrsnError> {
Ok(ParseRes::ext(match keyword {
"cmp" => {
ArithOp::Compare {
@@ -57,7 +57,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
}
}
_ => {
return Err(CrsnError::Parse("Add requires 2 or 3 arguments".into(), pos));
return Err(CrsnError::Parse("Add requires 2 or 3 arguments".into(), pos.clone()));
}
}
}
@@ -80,7 +80,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
}
}
_ => {
return Err(CrsnError::Parse("Sub requires 2 or 3 arguments".into(), pos));
return Err(CrsnError::Parse("Sub requires 2 or 3 arguments".into(), pos.clone()));
}
}
}
@@ -103,7 +103,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
}
}
_ => {
return Err(CrsnError::Parse("Mul requires 2 or 3 arguments".into(), pos));
return Err(CrsnError::Parse("Mul requires 2 or 3 arguments".into(), pos.clone()));
}
}
}
@@ -130,7 +130,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
}
}
_ => {
return Err(CrsnError::Parse("DivR requires 3 or 4 arguments".into(), pos));
return Err(CrsnError::Parse("DivR requires 3 or 4 arguments".into(), pos.clone()));
}
}
}
@@ -156,7 +156,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
}
}
_ => {
return Err(CrsnError::Parse("Div requires 2 or 3 arguments".into(), pos));
return Err(CrsnError::Parse("Div requires 2 or 3 arguments".into(), pos.clone()));
}
}
}
@@ -180,7 +180,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
}
}
_ => {
return Err(CrsnError::Parse("Mod requires 2 or 3 arguments".into(), pos));
return Err(CrsnError::Parse("Mod requires 2 or 3 arguments".into(), pos.clone()));
}
}
}
@@ -203,7 +203,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
}
}
_ => {
return Err(CrsnError::Parse("And requires 2 or 3 arguments".into(), pos));
return Err(CrsnError::Parse("And requires 2 or 3 arguments".into(), pos.clone()));
}
}
}
@@ -226,7 +226,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
}
}
_ => {
return Err(CrsnError::Parse("Or requires 2 or 3 arguments".into(), pos));
return Err(CrsnError::Parse("Or requires 2 or 3 arguments".into(), pos.clone()));
}
}
}
@@ -249,7 +249,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
}
}
_ => {
return Err(CrsnError::Parse("Xor requires 2 or 3 arguments".into(), pos));
return Err(CrsnError::Parse("Xor requires 2 or 3 arguments".into(), pos.clone()));
}
}
}
@@ -270,7 +270,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
}
}
_ => {
return Err(CrsnError::Parse("Cpl requires 1 or 2 arguments".into(), pos));
return Err(CrsnError::Parse("Cpl requires 1 or 2 arguments".into(), pos.clone()));
}
}
}
@@ -301,7 +301,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
}
}
_ => {
return Err(CrsnError::Parse("Rol requires 1, 2 or 3 arguments".into(), pos));
return Err(CrsnError::Parse("Rol requires 1, 2 or 3 arguments".into(), pos.clone()));
}
}
}
@@ -332,7 +332,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
}
}
_ => {
return Err(CrsnError::Parse("Ror requires 1, 2 or 3 arguments".into(), pos));
return Err(CrsnError::Parse("Ror requires 1, 2 or 3 arguments".into(), pos.clone()));
}
}
}
@@ -363,7 +363,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
}
}
_ => {
return Err(CrsnError::Parse("Lsl requires 1, 2 or 3 arguments".into(), pos));
return Err(CrsnError::Parse("Lsl requires 1, 2 or 3 arguments".into(), pos.clone()));
}
}
}
@@ -394,7 +394,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
}
}
_ => {
return Err(CrsnError::Parse("Lsr requires 1, 2 or 3 arguments".into(), pos));
return Err(CrsnError::Parse("Lsr requires 1, 2 or 3 arguments".into(), pos.clone()));
}
}
}
@@ -425,7 +425,7 @@ pub(crate) fn parse<'a>(pos: SourcePosition, keyword: &str, mut args: TokenParse
}
}
_ => {
return Err(CrsnError::Parse("Asr requires 1, 2 or 3 arguments".into(), pos));
return Err(CrsnError::Parse("Asr requires 1, 2 or 3 arguments".into(), pos.clone()));
}
}
}