mirror of
https://github.com/pezkuwichain/revive.git
synced 2026-04-29 03:07:57 +00:00
Merge branch 'main' into kvpanch/llvm_21
This commit is contained in:
@@ -51,11 +51,11 @@ impl RuntimeFunction for WordToPointer {
|
||||
)?;
|
||||
|
||||
let block_continue = context.append_basic_block("offset_pointer_ok");
|
||||
let block_trap = context.append_basic_block("offset_pointer_overflow");
|
||||
context.build_conditional_branch(is_overflow, block_trap, block_continue)?;
|
||||
let block_invalid = context.append_basic_block("offset_pointer_overflow");
|
||||
context.build_conditional_branch(is_overflow, block_invalid, block_continue)?;
|
||||
|
||||
context.set_basic_block(block_trap);
|
||||
context.build_call(context.intrinsics().trap, &[], "invalid_trap");
|
||||
context.set_basic_block(block_invalid);
|
||||
context.build_runtime_call(revive_runtime_api::polkavm_imports::INVALID, &[]);
|
||||
context.build_unreachable();
|
||||
|
||||
context.set_basic_block(block_continue);
|
||||
|
||||
@@ -52,12 +52,14 @@ pub fn stop(context: &mut Context) -> anyhow::Result<()> {
|
||||
/// Translates the `invalid` instruction.
|
||||
/// Burns all gas using an out-of-bounds memory store, causing a panic.
|
||||
pub fn invalid(context: &mut Context) -> anyhow::Result<()> {
|
||||
crate::polkavm::evm::memory::store(
|
||||
context,
|
||||
context.word_type().const_all_ones(),
|
||||
context.word_const(0),
|
||||
)?;
|
||||
context.build_call(context.intrinsics().trap, &[], "invalid_trap");
|
||||
let invalid_block = context.append_basic_block("explicit_invalid");
|
||||
context.build_unconditional_branch(invalid_block);
|
||||
context.set_basic_block(invalid_block);
|
||||
context.build_runtime_call(revive_runtime_api::polkavm_imports::INVALID, &[]);
|
||||
context.build_unreachable();
|
||||
|
||||
context.set_basic_block(context.append_basic_block("dead_code"));
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user