This commit is contained in:
TcMits
2025-09-14 18:59:57 +07:00
parent cab0c7b545
commit a658273c63
2 changed files with 135 additions and 139 deletions

View File

@@ -1120,152 +1120,148 @@ impl InsnVariants {
// This function is used for testing
#[allow(dead_code)]
#[inline(always)]
pub(crate) const fn to_function_fast(&self) -> InsnFunction {
INSN_VIRTUAL_TABLE[*self as usize]
pub(crate) const fn to_function_fast(self) -> InsnFunction {
INSN_VIRTUAL_TABLE[self as usize]
}
// This function is used for generating the virtual table.
// We need to keep this function to make sure we implement all opcodes
pub(crate) const fn to_function(&self) -> InsnFunction {
pub(crate) const fn to_function(self) -> InsnFunction {
match self {
InsnVariants::Init { .. } => execute::op_init,
InsnVariants::Null { .. } => execute::op_null,
InsnVariants::BeginSubrtn { .. } => execute::op_null,
InsnVariants::NullRow { .. } => execute::op_null_row,
InsnVariants::Add { .. } => execute::op_add,
InsnVariants::Subtract { .. } => execute::op_subtract,
InsnVariants::Multiply { .. } => execute::op_multiply,
InsnVariants::Divide { .. } => execute::op_divide,
InsnVariants::DropIndex { .. } => execute::op_drop_index,
InsnVariants::Compare { .. } => execute::op_compare,
InsnVariants::BitAnd { .. } => execute::op_bit_and,
InsnVariants::BitOr { .. } => execute::op_bit_or,
InsnVariants::BitNot { .. } => execute::op_bit_not,
InsnVariants::Checkpoint { .. } => execute::op_checkpoint,
InsnVariants::Remainder { .. } => execute::op_remainder,
InsnVariants::Jump { .. } => execute::op_jump,
InsnVariants::Move { .. } => execute::op_move,
InsnVariants::IfPos { .. } => execute::op_if_pos,
InsnVariants::NotNull { .. } => execute::op_not_null,
InsnVariants::Eq { .. }
| InsnVariants::Ne { .. }
| InsnVariants::Lt { .. }
| InsnVariants::Le { .. }
| InsnVariants::Gt { .. }
| InsnVariants::Ge { .. } => execute::op_comparison,
InsnVariants::If { .. } => execute::op_if,
InsnVariants::IfNot { .. } => execute::op_if_not,
InsnVariants::OpenRead { .. } => execute::op_open_read,
InsnVariants::VOpen { .. } => execute::op_vopen,
InsnVariants::VCreate { .. } => execute::op_vcreate,
InsnVariants::VFilter { .. } => execute::op_vfilter,
InsnVariants::VColumn { .. } => execute::op_vcolumn,
InsnVariants::VUpdate { .. } => execute::op_vupdate,
InsnVariants::VNext { .. } => execute::op_vnext,
InsnVariants::VDestroy { .. } => execute::op_vdestroy,
InsnVariants::Init => execute::op_init,
InsnVariants::Null => execute::op_null,
InsnVariants::BeginSubrtn => execute::op_null,
InsnVariants::NullRow => execute::op_null_row,
InsnVariants::Add => execute::op_add,
InsnVariants::Subtract => execute::op_subtract,
InsnVariants::Multiply => execute::op_multiply,
InsnVariants::Divide => execute::op_divide,
InsnVariants::DropIndex => execute::op_drop_index,
InsnVariants::Compare => execute::op_compare,
InsnVariants::BitAnd => execute::op_bit_and,
InsnVariants::BitOr => execute::op_bit_or,
InsnVariants::BitNot => execute::op_bit_not,
InsnVariants::Checkpoint => execute::op_checkpoint,
InsnVariants::Remainder => execute::op_remainder,
InsnVariants::Jump => execute::op_jump,
InsnVariants::Move => execute::op_move,
InsnVariants::IfPos => execute::op_if_pos,
InsnVariants::NotNull => execute::op_not_null,
InsnVariants::Eq
| InsnVariants::Ne
| InsnVariants::Lt
| InsnVariants::Le
| InsnVariants::Gt
| InsnVariants::Ge => execute::op_comparison,
InsnVariants::If => execute::op_if,
InsnVariants::IfNot => execute::op_if_not,
InsnVariants::OpenRead => execute::op_open_read,
InsnVariants::VOpen => execute::op_vopen,
InsnVariants::VCreate => execute::op_vcreate,
InsnVariants::VFilter => execute::op_vfilter,
InsnVariants::VColumn => execute::op_vcolumn,
InsnVariants::VUpdate => execute::op_vupdate,
InsnVariants::VNext => execute::op_vnext,
InsnVariants::VDestroy => execute::op_vdestroy,
InsnVariants::OpenPseudo { .. } => execute::op_open_pseudo,
InsnVariants::Rewind { .. } => execute::op_rewind,
InsnVariants::Last { .. } => execute::op_last,
InsnVariants::Column { .. } => execute::op_column,
InsnVariants::TypeCheck { .. } => execute::op_type_check,
InsnVariants::MakeRecord { .. } => execute::op_make_record,
InsnVariants::ResultRow { .. } => execute::op_result_row,
InsnVariants::Next { .. } => execute::op_next,
InsnVariants::Prev { .. } => execute::op_prev,
InsnVariants::Halt { .. } => execute::op_halt,
InsnVariants::HaltIfNull { .. } => execute::op_halt_if_null,
InsnVariants::Transaction { .. } => execute::op_transaction,
InsnVariants::AutoCommit { .. } => execute::op_auto_commit,
InsnVariants::Goto { .. } => execute::op_goto,
InsnVariants::Gosub { .. } => execute::op_gosub,
InsnVariants::Return { .. } => execute::op_return,
InsnVariants::Integer { .. } => execute::op_integer,
InsnVariants::Real { .. } => execute::op_real,
InsnVariants::RealAffinity { .. } => execute::op_real_affinity,
InsnVariants::String8 { .. } => execute::op_string8,
InsnVariants::Blob { .. } => execute::op_blob,
InsnVariants::RowData { .. } => execute::op_row_data,
InsnVariants::RowId { .. } => execute::op_row_id,
InsnVariants::IdxRowId { .. } => execute::op_idx_row_id,
InsnVariants::SeekRowid { .. } => execute::op_seek_rowid,
InsnVariants::DeferredSeek { .. } => execute::op_deferred_seek,
InsnVariants::SeekGE { .. }
| InsnVariants::SeekGT { .. }
| InsnVariants::SeekLE { .. }
| InsnVariants::SeekLT { .. } => execute::op_seek,
InsnVariants::SeekEnd { .. } => execute::op_seek_end,
InsnVariants::IdxGE { .. } => execute::op_idx_ge,
InsnVariants::IdxGT { .. } => execute::op_idx_gt,
InsnVariants::IdxLE { .. } => execute::op_idx_le,
InsnVariants::IdxLT { .. } => execute::op_idx_lt,
InsnVariants::DecrJumpZero { .. } => execute::op_decr_jump_zero,
InsnVariants::AggStep { .. } => execute::op_agg_step,
InsnVariants::AggFinal { .. } => execute::op_agg_final,
InsnVariants::SorterOpen { .. } => execute::op_sorter_open,
InsnVariants::SorterInsert { .. } => execute::op_sorter_insert,
InsnVariants::SorterSort { .. } => execute::op_sorter_sort,
InsnVariants::SorterData { .. } => execute::op_sorter_data,
InsnVariants::SorterNext { .. } => execute::op_sorter_next,
InsnVariants::Function { .. } => execute::op_function,
InsnVariants::Cast { .. } => execute::op_cast,
InsnVariants::InitCoroutine { .. } => execute::op_init_coroutine,
InsnVariants::EndCoroutine { .. } => execute::op_end_coroutine,
InsnVariants::Yield { .. } => execute::op_yield,
InsnVariants::Insert { .. } => execute::op_insert,
InsnVariants::Int64 { .. } => execute::op_int_64,
InsnVariants::IdxInsert { .. } => execute::op_idx_insert,
InsnVariants::Delete { .. } => execute::op_delete,
InsnVariants::NewRowid { .. } => execute::op_new_rowid,
InsnVariants::MustBeInt { .. } => execute::op_must_be_int,
InsnVariants::SoftNull { .. } => execute::op_soft_null,
InsnVariants::NoConflict { .. } => execute::op_no_conflict,
InsnVariants::NotExists { .. } => execute::op_not_exists,
InsnVariants::OffsetLimit { .. } => execute::op_offset_limit,
InsnVariants::OpenWrite { .. } => execute::op_open_write,
InsnVariants::Copy { .. } => execute::op_copy,
InsnVariants::CreateBtree { .. } => execute::op_create_btree,
InsnVariants::Destroy { .. } => execute::op_destroy,
InsnVariants::OpenPseudo => execute::op_open_pseudo,
InsnVariants::Rewind => execute::op_rewind,
InsnVariants::Last => execute::op_last,
InsnVariants::Column => execute::op_column,
InsnVariants::TypeCheck => execute::op_type_check,
InsnVariants::MakeRecord => execute::op_make_record,
InsnVariants::ResultRow => execute::op_result_row,
InsnVariants::Next => execute::op_next,
InsnVariants::Prev => execute::op_prev,
InsnVariants::Halt => execute::op_halt,
InsnVariants::HaltIfNull => execute::op_halt_if_null,
InsnVariants::Transaction => execute::op_transaction,
InsnVariants::AutoCommit => execute::op_auto_commit,
InsnVariants::Goto => execute::op_goto,
InsnVariants::Gosub => execute::op_gosub,
InsnVariants::Return => execute::op_return,
InsnVariants::Integer => execute::op_integer,
InsnVariants::Real => execute::op_real,
InsnVariants::RealAffinity => execute::op_real_affinity,
InsnVariants::String8 => execute::op_string8,
InsnVariants::Blob => execute::op_blob,
InsnVariants::RowData => execute::op_row_data,
InsnVariants::RowId => execute::op_row_id,
InsnVariants::IdxRowId => execute::op_idx_row_id,
InsnVariants::SeekRowid => execute::op_seek_rowid,
InsnVariants::DeferredSeek => execute::op_deferred_seek,
InsnVariants::SeekGE
| InsnVariants::SeekGT
| InsnVariants::SeekLE
| InsnVariants::SeekLT => execute::op_seek,
InsnVariants::SeekEnd => execute::op_seek_end,
InsnVariants::IdxGE => execute::op_idx_ge,
InsnVariants::IdxGT => execute::op_idx_gt,
InsnVariants::IdxLE => execute::op_idx_le,
InsnVariants::IdxLT => execute::op_idx_lt,
InsnVariants::DecrJumpZero => execute::op_decr_jump_zero,
InsnVariants::AggStep => execute::op_agg_step,
InsnVariants::AggFinal => execute::op_agg_final,
InsnVariants::SorterOpen => execute::op_sorter_open,
InsnVariants::SorterInsert => execute::op_sorter_insert,
InsnVariants::SorterSort => execute::op_sorter_sort,
InsnVariants::SorterData => execute::op_sorter_data,
InsnVariants::SorterNext => execute::op_sorter_next,
InsnVariants::Function => execute::op_function,
InsnVariants::Cast => execute::op_cast,
InsnVariants::InitCoroutine => execute::op_init_coroutine,
InsnVariants::EndCoroutine => execute::op_end_coroutine,
InsnVariants::Yield => execute::op_yield,
InsnVariants::Insert => execute::op_insert,
InsnVariants::Int64 => execute::op_int_64,
InsnVariants::IdxInsert => execute::op_idx_insert,
InsnVariants::Delete => execute::op_delete,
InsnVariants::NewRowid => execute::op_new_rowid,
InsnVariants::MustBeInt => execute::op_must_be_int,
InsnVariants::SoftNull => execute::op_soft_null,
InsnVariants::NoConflict => execute::op_no_conflict,
InsnVariants::NotExists => execute::op_not_exists,
InsnVariants::OffsetLimit => execute::op_offset_limit,
InsnVariants::OpenWrite => execute::op_open_write,
InsnVariants::Copy => execute::op_copy,
InsnVariants::CreateBtree => execute::op_create_btree,
InsnVariants::Destroy => execute::op_destroy,
InsnVariants::DropTable { .. } => execute::op_drop_table,
InsnVariants::DropView { .. } => execute::op_drop_view,
InsnVariants::Close { .. } => execute::op_close,
InsnVariants::IsNull { .. } => execute::op_is_null,
InsnVariants::CollSeq { .. } => execute::op_coll_seq,
InsnVariants::ParseSchema { .. } => execute::op_parse_schema,
InsnVariants::PopulateMaterializedViews { .. } => {
execute::op_populate_materialized_views
}
InsnVariants::ShiftRight { .. } => execute::op_shift_right,
InsnVariants::ShiftLeft { .. } => execute::op_shift_left,
InsnVariants::AddImm { .. } => execute::op_add_imm,
InsnVariants::Variable { .. } => execute::op_variable,
InsnVariants::ZeroOrNull { .. } => execute::op_zero_or_null,
InsnVariants::Not { .. } => execute::op_not,
InsnVariants::Concat { .. } => execute::op_concat,
InsnVariants::And { .. } => execute::op_and,
InsnVariants::Or { .. } => execute::op_or,
InsnVariants::DropTable => execute::op_drop_table,
InsnVariants::DropView => execute::op_drop_view,
InsnVariants::Close => execute::op_close,
InsnVariants::IsNull => execute::op_is_null,
InsnVariants::CollSeq => execute::op_coll_seq,
InsnVariants::ParseSchema => execute::op_parse_schema,
InsnVariants::PopulateMaterializedViews => execute::op_populate_materialized_views,
InsnVariants::ShiftRight => execute::op_shift_right,
InsnVariants::ShiftLeft => execute::op_shift_left,
InsnVariants::AddImm => execute::op_add_imm,
InsnVariants::Variable => execute::op_variable,
InsnVariants::ZeroOrNull => execute::op_zero_or_null,
InsnVariants::Not => execute::op_not,
InsnVariants::Concat => execute::op_concat,
InsnVariants::And => execute::op_and,
InsnVariants::Or => execute::op_or,
InsnVariants::Noop => execute::op_noop,
InsnVariants::PageCount { .. } => execute::op_page_count,
InsnVariants::ReadCookie { .. } => execute::op_read_cookie,
InsnVariants::SetCookie { .. } => execute::op_set_cookie,
InsnVariants::OpenEphemeral { .. } | InsnVariants::OpenAutoindex { .. } => {
execute::op_open_ephemeral
}
InsnVariants::Once { .. } => execute::op_once,
InsnVariants::Found { .. } | InsnVariants::NotFound { .. } => execute::op_found,
InsnVariants::Affinity { .. } => execute::op_affinity,
InsnVariants::IdxDelete { .. } => execute::op_idx_delete,
InsnVariants::Count { .. } => execute::op_count,
InsnVariants::IntegrityCk { .. } => execute::op_integrity_check,
InsnVariants::RenameTable { .. } => execute::op_rename_table,
InsnVariants::DropColumn { .. } => execute::op_drop_column,
InsnVariants::AddColumn { .. } => execute::op_add_column,
InsnVariants::AlterColumn { .. } => execute::op_alter_column,
InsnVariants::MaxPgcnt { .. } => execute::op_max_pgcnt,
InsnVariants::JournalMode { .. } => execute::op_journal_mode,
InsnVariants::IfNeg { .. } => execute::op_if_neg,
InsnVariants::Explain { .. } => execute::op_noop,
InsnVariants::PageCount => execute::op_page_count,
InsnVariants::ReadCookie => execute::op_read_cookie,
InsnVariants::SetCookie => execute::op_set_cookie,
InsnVariants::OpenEphemeral | InsnVariants::OpenAutoindex => execute::op_open_ephemeral,
InsnVariants::Once => execute::op_once,
InsnVariants::Found | InsnVariants::NotFound => execute::op_found,
InsnVariants::Affinity => execute::op_affinity,
InsnVariants::IdxDelete => execute::op_idx_delete,
InsnVariants::Count => execute::op_count,
InsnVariants::IntegrityCk => execute::op_integrity_check,
InsnVariants::RenameTable => execute::op_rename_table,
InsnVariants::DropColumn => execute::op_drop_column,
InsnVariants::AddColumn => execute::op_add_column,
InsnVariants::AlterColumn => execute::op_alter_column,
InsnVariants::MaxPgcnt => execute::op_max_pgcnt,
InsnVariants::JournalMode => execute::op_journal_mode,
InsnVariants::IfNeg => execute::op_if_neg,
InsnVariants::Explain => execute::op_noop,
}
}
}

View File

@@ -47,7 +47,7 @@ pub fn derive_description_from_doc(item: TokenStream) -> TokenStream {
continue;
}
// this is a quick fix for
// this is a quick fix for
if ident_str == "repr" {
continue;
}