mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:07:35 +00:00
LibJS+LibJIT: Replace make_label() with default constructed label
This commit is contained in:
parent
ff265d1900
commit
202a08ecc2
2 changed files with 13 additions and 18 deletions
|
@ -254,17 +254,12 @@ struct Assembler {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
[[nodiscard]] Label make_label()
|
|
||||||
{
|
|
||||||
return Label {};
|
|
||||||
}
|
|
||||||
|
|
||||||
[[nodiscard]] Label jump()
|
[[nodiscard]] Label jump()
|
||||||
{
|
{
|
||||||
// jmp target (RIP-relative 32-bit offset)
|
// jmp target (RIP-relative 32-bit offset)
|
||||||
emit8(0xe9);
|
emit8(0xe9);
|
||||||
emit32(0xdeadbeef);
|
emit32(0xdeadbeef);
|
||||||
auto label = make_label();
|
Assembler::Label label {};
|
||||||
label.add_jump(*this, m_output.size());
|
label.add_jump(*this, m_output.size());
|
||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,7 +137,7 @@ void Compiler::compile_to_boolean(Assembler::Reg dst, Assembler::Reg src)
|
||||||
Assembler::Operand::Imm(48));
|
Assembler::Operand::Imm(48));
|
||||||
|
|
||||||
// if (dst != BOOLEAN_TAG) goto slow_case;
|
// if (dst != BOOLEAN_TAG) goto slow_case;
|
||||||
auto slow_case = m_assembler.make_label();
|
Assembler::Label slow_case {};
|
||||||
m_assembler.jump_if_not_equal(
|
m_assembler.jump_if_not_equal(
|
||||||
Assembler::Operand::Register(dst),
|
Assembler::Operand::Register(dst),
|
||||||
Assembler::Operand::Imm(BOOLEAN_TAG),
|
Assembler::Operand::Imm(BOOLEAN_TAG),
|
||||||
|
@ -220,7 +220,7 @@ void Compiler::branch_if_int32(Assembler::Reg reg, Codegen codegen)
|
||||||
m_assembler.mov(Assembler::Operand::Register(GPR0), Assembler::Operand::Register(reg));
|
m_assembler.mov(Assembler::Operand::Register(GPR0), Assembler::Operand::Register(reg));
|
||||||
m_assembler.shift_right(Assembler::Operand::Register(GPR0), Assembler::Operand::Imm(48));
|
m_assembler.shift_right(Assembler::Operand::Register(GPR0), Assembler::Operand::Imm(48));
|
||||||
|
|
||||||
auto not_int32_case = m_assembler.make_label();
|
Assembler::Label not_int32_case {};
|
||||||
m_assembler.jump_if_not_equal(
|
m_assembler.jump_if_not_equal(
|
||||||
Assembler::Operand::Register(GPR0),
|
Assembler::Operand::Register(GPR0),
|
||||||
Assembler::Operand::Imm(INT32_TAG),
|
Assembler::Operand::Imm(INT32_TAG),
|
||||||
|
@ -242,7 +242,7 @@ void Compiler::branch_if_both_int32(Assembler::Reg lhs, Assembler::Reg rhs, Code
|
||||||
m_assembler.mov(Assembler::Operand::Register(GPR1), Assembler::Operand::Register(rhs));
|
m_assembler.mov(Assembler::Operand::Register(GPR1), Assembler::Operand::Register(rhs));
|
||||||
m_assembler.shift_right(Assembler::Operand::Register(GPR1), Assembler::Operand::Imm(48));
|
m_assembler.shift_right(Assembler::Operand::Register(GPR1), Assembler::Operand::Imm(48));
|
||||||
|
|
||||||
auto not_int32_case = m_assembler.make_label();
|
Assembler::Label not_int32_case {};
|
||||||
m_assembler.jump_if_not_equal(
|
m_assembler.jump_if_not_equal(
|
||||||
Assembler::Operand::Register(GPR0),
|
Assembler::Operand::Register(GPR0),
|
||||||
Assembler::Operand::Imm(INT32_TAG),
|
Assembler::Operand::Imm(INT32_TAG),
|
||||||
|
@ -261,8 +261,8 @@ void Compiler::compile_increment(Bytecode::Op::Increment const&)
|
||||||
{
|
{
|
||||||
load_vm_register(ARG1, Bytecode::Register::accumulator());
|
load_vm_register(ARG1, Bytecode::Register::accumulator());
|
||||||
|
|
||||||
auto end = m_assembler.make_label();
|
Assembler::Label end {};
|
||||||
auto slow_case = m_assembler.make_label();
|
Assembler::Label slow_case {};
|
||||||
|
|
||||||
branch_if_int32(ARG1, [&] {
|
branch_if_int32(ARG1, [&] {
|
||||||
// GPR0 = ARG1 & 0xffffffff;
|
// GPR0 = ARG1 & 0xffffffff;
|
||||||
|
@ -328,7 +328,7 @@ void Compiler::check_exception()
|
||||||
// We have an exception!
|
// We have an exception!
|
||||||
|
|
||||||
// if (!unwind_context.valid) return;
|
// if (!unwind_context.valid) return;
|
||||||
auto handle_exception = m_assembler.make_label();
|
Assembler::Label handle_exception {};
|
||||||
m_assembler.mov(
|
m_assembler.mov(
|
||||||
Assembler::Operand::Register(GPR0),
|
Assembler::Operand::Register(GPR0),
|
||||||
Assembler::Operand::Mem64BaseAndOffset(UNWIND_CONTEXT_BASE, 0));
|
Assembler::Operand::Mem64BaseAndOffset(UNWIND_CONTEXT_BASE, 0));
|
||||||
|
@ -347,7 +347,7 @@ void Compiler::check_exception()
|
||||||
// exception = Value();
|
// exception = Value();
|
||||||
// goto handler;
|
// goto handler;
|
||||||
// }
|
// }
|
||||||
auto no_handler = m_assembler.make_label();
|
Assembler::Label no_handler {};
|
||||||
m_assembler.mov(
|
m_assembler.mov(
|
||||||
Assembler::Operand::Register(GPR0),
|
Assembler::Operand::Register(GPR0),
|
||||||
Assembler::Operand::Mem64BaseAndOffset(UNWIND_CONTEXT_BASE, 8));
|
Assembler::Operand::Mem64BaseAndOffset(UNWIND_CONTEXT_BASE, 8));
|
||||||
|
@ -367,7 +367,7 @@ void Compiler::check_exception()
|
||||||
no_handler.link(m_assembler);
|
no_handler.link(m_assembler);
|
||||||
|
|
||||||
// if (unwind_context.finalizer) goto finalizer;
|
// if (unwind_context.finalizer) goto finalizer;
|
||||||
auto no_finalizer = m_assembler.make_label();
|
Assembler::Label no_finalizer {};
|
||||||
m_assembler.mov(
|
m_assembler.mov(
|
||||||
Assembler::Operand::Register(GPR0),
|
Assembler::Operand::Register(GPR0),
|
||||||
Assembler::Operand::Mem64BaseAndOffset(UNWIND_CONTEXT_BASE, 16));
|
Assembler::Operand::Mem64BaseAndOffset(UNWIND_CONTEXT_BASE, 16));
|
||||||
|
@ -505,13 +505,13 @@ void Compiler::compile_less_than(Bytecode::Op::LessThan const& op)
|
||||||
load_vm_register(ARG1, op.lhs());
|
load_vm_register(ARG1, op.lhs());
|
||||||
load_vm_register(ARG2, Bytecode::Register::accumulator());
|
load_vm_register(ARG2, Bytecode::Register::accumulator());
|
||||||
|
|
||||||
auto end = m_assembler.make_label();
|
Assembler::Label end {};
|
||||||
|
|
||||||
branch_if_both_int32(ARG1, ARG2, [&] {
|
branch_if_both_int32(ARG1, ARG2, [&] {
|
||||||
// if (ARG1 < ARG2) return true;
|
// if (ARG1 < ARG2) return true;
|
||||||
// else return false;
|
// else return false;
|
||||||
|
|
||||||
auto true_case = m_assembler.make_label();
|
Assembler::Label true_case {};
|
||||||
|
|
||||||
m_assembler.sign_extend_32_to_64_bits(ARG1);
|
m_assembler.sign_extend_32_to_64_bits(ARG1);
|
||||||
m_assembler.sign_extend_32_to_64_bits(ARG2);
|
m_assembler.sign_extend_32_to_64_bits(ARG2);
|
||||||
|
@ -575,7 +575,7 @@ void Compiler::compile_return(Bytecode::Op::Return const&)
|
||||||
|
|
||||||
// check for finalizer
|
// check for finalizer
|
||||||
// if (!unwind_context.valid) goto normal_return;
|
// if (!unwind_context.valid) goto normal_return;
|
||||||
auto normal_return = m_assembler.make_label();
|
Assembler::Label normal_return {};
|
||||||
m_assembler.mov(
|
m_assembler.mov(
|
||||||
Assembler::Operand::Register(GPR1),
|
Assembler::Operand::Register(GPR1),
|
||||||
Assembler::Operand::Mem64BaseAndOffset(UNWIND_CONTEXT_BASE, 0));
|
Assembler::Operand::Mem64BaseAndOffset(UNWIND_CONTEXT_BASE, 0));
|
||||||
|
@ -831,7 +831,7 @@ void Compiler::compile_resolve_this_binding(Bytecode::Op::ResolveThisBinding con
|
||||||
Assembler::Operand::Register(GPR1),
|
Assembler::Operand::Register(GPR1),
|
||||||
Assembler::Operand::Imm(Value().encoded()));
|
Assembler::Operand::Imm(Value().encoded()));
|
||||||
|
|
||||||
auto slow_case = m_assembler.make_label();
|
Assembler::Label slow_case {};
|
||||||
m_assembler.jump_if_equal(
|
m_assembler.jump_if_equal(
|
||||||
Assembler::Operand::Register(GPR0),
|
Assembler::Operand::Register(GPR0),
|
||||||
Assembler::Operand::Register(GPR1),
|
Assembler::Operand::Register(GPR1),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue