Skip to content

Commit

Permalink
reformat code base and add stress_gc feature
Browse files Browse the repository at this point in the history
  • Loading branch information
y21 committed Dec 23, 2023
1 parent bd7f122 commit afd8c9c
Show file tree
Hide file tree
Showing 114 changed files with 502 additions and 1,037 deletions.
9 changes: 3 additions & 6 deletions cli/src/cmd/dump.rs
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
use std::fs;
use std::io;
use std::io::Write;
use std::{fs, io};

use anyhow::anyhow;
use anyhow::Context;
use anyhow::{anyhow, Context};
use clap::ArgMatches;
use dash_compiler::transformations;
use dash_middle::interner::StringInterner;
use dash_middle::parser::error::IntoFormattableErrors;
use dash_middle::parser::statement::FuncId;
use dash_middle::parser::statement::VariableDeclarationName;
use dash_middle::parser::statement::{FuncId, VariableDeclarationName};
use dash_optimizer::consteval::ConstFunctionEvalCtx;
use dash_optimizer::type_infer::TypeInferCtx;

Expand Down
1 change: 1 addition & 0 deletions cli/src/cmd/eval.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ use clap::ArgMatches;
use dash_middle::parser::error::IntoFormattableErrors;
use dash_rt::format_value;
use dash_vm::eval::EvalError;
use dash_vm::value::Root;
use dash_vm::Vm;

use crate::util;
Expand Down
1 change: 1 addition & 0 deletions cli/src/cmd/repl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use dash_middle::parser::error::IntoFormattableErrors;
use dash_optimizer::OptLevel;
use dash_rt::format_value;
use dash_vm::eval::EvalError;
use dash_vm::value::Root;
use dash_vm::Vm;
use rustyline::Editor;

Expand Down
1 change: 1 addition & 0 deletions cli/src/cmd/run.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ use dash_rt::format_value;
use dash_rt::runtime::Runtime;
use dash_rt::state::State;
use dash_vm::eval::EvalError;
use dash_vm::value::Root;
use std::fs;
use std::str::FromStr;
use std::time::Instant;
Expand Down
6 changes: 2 additions & 4 deletions cli/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
use std::backtrace::Backtrace;
use std::backtrace::BacktraceStatus;
use std::backtrace::{Backtrace, BacktraceStatus};

use anyhow::bail;
use clap::Arg;
use clap::Command;
use clap::{Arg, Command};
use colorful::Colorful;

mod cmd;
Expand Down
6 changes: 2 additions & 4 deletions crates/dash_compiler/src/builder.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
use std::convert::TryInto;
use std::hash::Hash;
use std::ops::Deref;
use std::ops::DerefMut;
use std::ops::{Deref, DerefMut};

use dash_middle::compiler::instruction as inst;
use dash_middle::compiler::instruction::Instruction;

use crate::jump_container;
use crate::jump_container::JumpContainer;
use crate::FunctionCompiler;
use crate::{jump_container, FunctionCompiler};

#[derive(PartialOrd, Ord, Hash, Eq, PartialEq, Debug, Clone)]
pub enum Label {
Expand Down
20 changes: 9 additions & 11 deletions crates/dash_compiler/src/instruction.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
use std::{convert::TryInto, rc::Rc};

use dash_middle::{
compiler::{
constant::{Constant, LimitExceededError},
instruction::{AssignKind, Instruction, IntrinsicOperation},
FunctionCallMetadata, ObjectMemberKind as CompilerObjectMemberKind, StaticImportKind,
},
parser::{error::Error, expr::ObjectMemberKind},
sourcemap::Span,
};
use std::convert::TryInto;
use std::rc::Rc;

use dash_middle::compiler::constant::{Constant, LimitExceededError};
use dash_middle::compiler::instruction::{AssignKind, Instruction, IntrinsicOperation};
use dash_middle::compiler::{FunctionCallMetadata, ObjectMemberKind as CompilerObjectMemberKind, StaticImportKind};
use dash_middle::parser::error::Error;
use dash_middle::parser::expr::ObjectMemberKind;
use dash_middle::sourcemap::Span;

use super::builder::{InstructionBuilder, Label};

Expand Down
51 changes: 16 additions & 35 deletions crates/dash_compiler/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,48 +1,29 @@
use std::cell::{Cell, RefCell};
use std::collections::HashSet;
use std::convert::TryInto;
use std::rc::Rc;
use std::{convert::TryInto, usize};
use std::usize;

use dash_log::{debug, span, Level};
use dash_middle::compiler::constant::{Buffer, Constant, Function};
use dash_middle::compiler::constant::{Buffer, Constant, ConstantPool, Function};
use dash_middle::compiler::external::External;
use dash_middle::compiler::instruction::{AssignKind, IntrinsicOperation};
use dash_middle::compiler::scope::ScopeLocal;
use dash_middle::compiler::scope::{CompileValueType, Scope};
use dash_middle::compiler::{constant::ConstantPool, external::External};
use dash_middle::compiler::scope::{CompileValueType, Scope, ScopeLocal};
use dash_middle::compiler::{CompileResult, FunctionCallMetadata, StaticImportKind};
use dash_middle::interner::{sym, StringInterner, Symbol};
use dash_middle::lexer::token::TokenType;
use dash_middle::parser::error::Error;
use dash_middle::parser::expr::FunctionCall;
use dash_middle::parser::expr::GroupingExpr;
use dash_middle::parser::expr::LiteralExpr;
use dash_middle::parser::expr::ObjectLiteral;
use dash_middle::parser::expr::Postfix;
use dash_middle::parser::expr::PropertyAccessExpr;
use dash_middle::parser::expr::Seq;
use dash_middle::parser::expr::UnaryExpr;
use dash_middle::parser::expr::{ArrayLiteral, ObjectMemberKind};
use dash_middle::parser::expr::{ArrayMemberKind, BinaryExpr};
use dash_middle::parser::expr::{AssignmentExpr, AssignmentTarget};
use dash_middle::parser::expr::{CallArgumentKind, ConditionalExpr};
use dash_middle::parser::expr::{Expr, ExprKind};
use dash_middle::parser::statement::SpecifierKind;
use dash_middle::parser::statement::StatementKind;
use dash_middle::parser::statement::TryCatch;
use dash_middle::parser::statement::VariableBinding;
use dash_middle::parser::statement::VariableDeclaration;
use dash_middle::parser::statement::VariableDeclarationKind;
use dash_middle::parser::statement::WhileLoop;
use dash_middle::parser::statement::{BlockStatement, Loop};
use dash_middle::parser::statement::{Class, Parameter};
use dash_middle::parser::statement::{ClassMemberKind, ExportKind};
use dash_middle::parser::statement::{DoWhileLoop, ForLoop};
use dash_middle::parser::statement::{ForInLoop, ForOfLoop};
use dash_middle::parser::statement::{FuncId, ImportKind};
use dash_middle::parser::statement::{FunctionDeclaration, SwitchStatement};
use dash_middle::parser::statement::{FunctionKind, VariableDeclarationName};
use dash_middle::parser::statement::{IfStatement, VariableDeclarations};
use dash_middle::parser::statement::{ReturnStatement, Statement};
use dash_middle::parser::expr::{
ArrayLiteral, ArrayMemberKind, AssignmentExpr, AssignmentTarget, BinaryExpr, CallArgumentKind, ConditionalExpr,
Expr, ExprKind, FunctionCall, GroupingExpr, LiteralExpr, ObjectLiteral, ObjectMemberKind, Postfix,
PropertyAccessExpr, Seq, UnaryExpr,
};
use dash_middle::parser::statement::{
BlockStatement, Class, ClassMemberKind, DoWhileLoop, ExportKind, ForInLoop, ForLoop, ForOfLoop, FuncId,
FunctionDeclaration, FunctionKind, IfStatement, ImportKind, Loop, Parameter, ReturnStatement, SpecifierKind,
Statement, StatementKind, SwitchStatement, TryCatch, VariableBinding, VariableDeclaration, VariableDeclarationKind,
VariableDeclarationName, VariableDeclarations, WhileLoop,
};
use dash_middle::sourcemap::Span;
use dash_middle::visitor::Visitor;
use dash_optimizer::consteval::ConstFunctionEvalCtx;
Expand Down
17 changes: 4 additions & 13 deletions crates/dash_compiler/src/transformations.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,9 @@
use dash_middle::interner::sym;
use dash_middle::lexer::token::TokenType;
use dash_middle::parser::expr::AssignmentExpr;
use dash_middle::parser::expr::AssignmentTarget;
use dash_middle::parser::expr::Expr;
use dash_middle::parser::expr::ExprKind;
use dash_middle::parser::expr::PropertyAccessExpr;
use dash_middle::parser::statement::BlockStatement;
use dash_middle::parser::statement::Class;
use dash_middle::parser::statement::ClassMemberKind;
use dash_middle::parser::statement::ClassProperty;
use dash_middle::parser::statement::Loop;
use dash_middle::parser::statement::ReturnStatement;
use dash_middle::parser::statement::Statement;
use dash_middle::parser::statement::StatementKind;
use dash_middle::parser::expr::{AssignmentExpr, AssignmentTarget, Expr, ExprKind, PropertyAccessExpr};
use dash_middle::parser::statement::{
BlockStatement, Class, ClassMemberKind, ClassProperty, Loop, ReturnStatement, Statement, StatementKind,
};
use dash_middle::sourcemap::Span;

/// Implicitly patches the last expression to be returned from the function
Expand Down
6 changes: 2 additions & 4 deletions crates/dash_decompiler/src/decompiler.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
use dash_middle::compiler::constant::Constant;
use dash_middle::compiler::instruction::Instruction;
use dash_middle::compiler::instruction::IntrinsicOperation;
use dash_middle::compiler::FunctionCallMetadata;
use dash_middle::compiler::ObjectMemberKind;
use dash_middle::compiler::instruction::{Instruction, IntrinsicOperation};
use dash_middle::compiler::{FunctionCallMetadata, ObjectMemberKind};
use dash_middle::util::Reader;
use std::fmt;
use std::fmt::Write;
Expand Down
7 changes: 2 additions & 5 deletions crates/dash_dlloader/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,8 @@ use dash_rt::module::ModuleLoader;
use dash_vm::localscope::LocalScope;
use dash_vm::throw;
use dash_vm::value::function::native::CallContext;
use dash_vm::value::function::Function;
use dash_vm::value::function::FunctionKind;
use dash_vm::value::object::NamedObject;
use dash_vm::value::object::Object;
use dash_vm::value::object::PropertyValue;
use dash_vm::value::function::{Function, FunctionKind};
use dash_vm::value::object::{NamedObject, Object, PropertyValue};
use dash_vm::value::ops::abstractions::conversions::ValueConversion;
use dash_vm::value::Value;
use libloading::Library;
Expand Down
39 changes: 17 additions & 22 deletions crates/dash_llvm_jit_backend/src/codegen/mod.rs
Original file line number Diff line number Diff line change
@@ -1,26 +1,16 @@
use std::collections::HashMap;
use std::collections::HashSet;

use dash_middle::compiler::instruction::AssignKind;
use dash_middle::compiler::instruction::Instruction;
use dash_middle::compiler::instruction::IntrinsicOperation;
use dash_typed_cfg::passes::bb_generation::BasicBlockKey;
use dash_typed_cfg::passes::bb_generation::BasicBlockMap;
use dash_typed_cfg::passes::bb_generation::BasicBlockSuccessor;
use dash_typed_cfg::passes::bb_generation::ConditionalBranchAction;
use dash_typed_cfg::passes::type_infer::Type;
use dash_typed_cfg::passes::type_infer::TypeMap;
use std::collections::{HashMap, HashSet};

use dash_middle::compiler::instruction::{AssignKind, Instruction, IntrinsicOperation};
use dash_typed_cfg::passes::bb_generation::{
BasicBlockKey, BasicBlockMap, BasicBlockSuccessor, ConditionalBranchAction,
};
use dash_typed_cfg::passes::type_infer::{Type, TypeMap};
use dash_typed_cfg::util::DecodeCtxt;
use dash_typed_cfg::TypedCfg;
use llvm_sys::execution_engine::LLVMExecutionEngineRef;
use llvm_sys::execution_engine::LLVMGetFunctionAddress;
use llvm_sys::prelude::LLVMBasicBlockRef;
use llvm_sys::prelude::LLVMBuilderRef;
use llvm_sys::prelude::LLVMContextRef;
use llvm_sys::prelude::LLVMModuleRef;
use llvm_sys::prelude::LLVMPassManagerRef;
use llvm_sys::prelude::LLVMTypeRef;
use llvm_sys::prelude::LLVMValueRef;
use llvm_sys::execution_engine::{LLVMExecutionEngineRef, LLVMGetFunctionAddress};
use llvm_sys::prelude::{
LLVMBasicBlockRef, LLVMBuilderRef, LLVMContextRef, LLVMModuleRef, LLVMPassManagerRef, LLVMTypeRef, LLVMValueRef,
};
use llvm_sys::target_machine::LLVMCodeGenOptLevel;
use llvm_sys::LLVMTypeKind;

Expand Down Expand Up @@ -378,7 +368,12 @@ impl<'a, 'q, Q: CodegenQuery> CodegenCtxt<'a, 'q, Q> {
let count = dcx.next_wide_signed();
let _target_ip = usize::try_from(index as i16 + count + 3).unwrap();
let bb = &self.bb_map[&bbk];
let Some(BasicBlockSuccessor::Conditional { true_ip, false_ip, action: Some(action) }) = bb.successor else {
let Some(BasicBlockSuccessor::Conditional {
true_ip,
false_ip,
action: Some(action),
}) = bb.successor
else {
panic!("unmatched basic block successor");
};

Expand Down
4 changes: 1 addition & 3 deletions crates/dash_llvm_jit_backend/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
#![allow(unused)]

use llvm_sys::execution_engine::LLVMLinkInMCJIT;
use llvm_sys::target::LLVM_InitializeNativeAsmParser;
use llvm_sys::target::LLVM_InitializeNativeAsmPrinter;
use llvm_sys::target::LLVM_InitializeNativeTarget;
use llvm_sys::target::{LLVM_InitializeNativeAsmParser, LLVM_InitializeNativeAsmPrinter, LLVM_InitializeNativeTarget};

pub mod codegen;
pub mod error;
Expand Down
41 changes: 8 additions & 33 deletions crates/dash_llvm_jit_backend/src/llvm_wrapper/builder.rs
Original file line number Diff line number Diff line change
@@ -1,41 +1,16 @@
use llvm_sys::core::LLVMAddIncoming;
use llvm_sys::core::LLVMBuildAdd;
use llvm_sys::core::LLVMBuildAlloca;
use llvm_sys::core::LLVMBuildBitCast;
use llvm_sys::core::LLVMBuildBr;
use llvm_sys::core::LLVMBuildCondBr;
use llvm_sys::core::LLVMBuildFAdd;
use llvm_sys::core::LLVMBuildFCmp;
use llvm_sys::core::LLVMBuildFDiv;
use llvm_sys::core::LLVMBuildFMul;
use llvm_sys::core::LLVMBuildFPToSI;
use llvm_sys::core::LLVMBuildFRem;
use llvm_sys::core::LLVMBuildFSub;
use llvm_sys::core::LLVMBuildGEP2;
use llvm_sys::core::LLVMBuildICmp;
use llvm_sys::core::LLVMBuildLoad2;
use llvm_sys::core::LLVMBuildMul;
use llvm_sys::core::LLVMBuildPhi;
use llvm_sys::core::LLVMBuildRetVoid;
use llvm_sys::core::LLVMBuildSDiv;
use llvm_sys::core::LLVMBuildSExt;
use llvm_sys::core::LLVMBuildSIToFP;
use llvm_sys::core::LLVMBuildSRem;
use llvm_sys::core::LLVMBuildStore;
use llvm_sys::core::LLVMBuildSub;
use llvm_sys::core::LLVMBuildTrunc;
use llvm_sys::core::LLVMPositionBuilderAtEnd;
use llvm_sys::core::{
LLVMAddIncoming, LLVMBuildAdd, LLVMBuildAlloca, LLVMBuildBitCast, LLVMBuildBr, LLVMBuildCondBr, LLVMBuildFAdd,
LLVMBuildFCmp, LLVMBuildFDiv, LLVMBuildFMul, LLVMBuildFPToSI, LLVMBuildFRem, LLVMBuildFSub, LLVMBuildGEP2,
LLVMBuildICmp, LLVMBuildLoad2, LLVMBuildMul, LLVMBuildPhi, LLVMBuildRetVoid, LLVMBuildSDiv, LLVMBuildSExt,
LLVMBuildSIToFP, LLVMBuildSRem, LLVMBuildStore, LLVMBuildSub, LLVMBuildTrunc, LLVMPositionBuilderAtEnd,
};
use llvm_sys::prelude::LLVMBuilderRef;
use llvm_sys::LLVMIntPredicate;
use llvm_sys::LLVMRealPredicate;
use llvm_sys::LLVMTypeKind;
use llvm_sys::{LLVMIntPredicate, LLVMRealPredicate, LLVMTypeKind};

use crate::cstrp;

use super::value::Phi;
use super::BasicBlock;
use super::Ty;
use super::Value;
use super::{BasicBlock, Ty, Value};

pub enum Predicate {
Lt,
Expand Down
31 changes: 8 additions & 23 deletions crates/dash_llvm_jit_backend/src/llvm_wrapper/context.rs
Original file line number Diff line number Diff line change
@@ -1,32 +1,17 @@
use std::ffi::CStr;
use std::ffi::CString;
use std::ffi::{CStr, CString};
use std::fmt::format;

use dash_typed_cfg::passes::type_infer::Type;
use llvm_sys::core::LLVMAppendBasicBlockInContext;
use llvm_sys::core::LLVMConstInt;
use llvm_sys::core::LLVMConstReal;
use llvm_sys::core::LLVMContextCreate;
use llvm_sys::core::LLVMCreateBuilderInContext;
use llvm_sys::core::LLVMDoubleTypeInContext;
use llvm_sys::core::LLVMFunctionType;
use llvm_sys::core::LLVMInt1TypeInContext;
use llvm_sys::core::LLVMInt32TypeInContext;
use llvm_sys::core::LLVMInt64TypeInContext;
use llvm_sys::core::LLVMInt8TypeInContext;
use llvm_sys::core::LLVMModuleCreateWithNameInContext;
use llvm_sys::core::LLVMPointerType;
use llvm_sys::core::LLVMStructTypeInContext;
use llvm_sys::core::LLVMVoidTypeInContext;
use llvm_sys::core::{
LLVMAppendBasicBlockInContext, LLVMConstInt, LLVMConstReal, LLVMContextCreate, LLVMCreateBuilderInContext,
LLVMDoubleTypeInContext, LLVMFunctionType, LLVMInt1TypeInContext, LLVMInt32TypeInContext, LLVMInt64TypeInContext,
LLVMInt8TypeInContext, LLVMModuleCreateWithNameInContext, LLVMPointerType, LLVMStructTypeInContext,
LLVMVoidTypeInContext,
};
use llvm_sys::prelude::LLVMContextRef;

use super::module::Module;
use super::raw;
use super::BasicBlock;
use super::Builder;
use super::Function;
use super::Ty;
use super::Value;
use super::{raw, BasicBlock, Builder, Function, Ty, Value};

pub struct Context {
module_count: usize,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
use std::ffi::CStr;
use std::mem;

use llvm_sys::execution_engine::LLVMExecutionEngineRef;
use llvm_sys::execution_engine::LLVMGetExecutionEngineTargetData;
use llvm_sys::execution_engine::LLVMGetFunctionAddress;
use llvm_sys::execution_engine::{LLVMExecutionEngineRef, LLVMGetExecutionEngineTargetData, LLVMGetFunctionAddress};
use llvm_sys::target::LLVMSizeOfTypeInBits;

use super::Ty;
Expand All @@ -29,7 +27,7 @@ impl ExecutionEngine {
unsafe {
let addr = LLVMGetFunctionAddress(self.0, name.as_ptr());
assert!(addr != 0);

mem::transmute::<u64, JitFunction>(addr)
}
}
Expand Down
Loading

0 comments on commit afd8c9c

Please sign in to comment.