Skip to content

Commit

Permalink
Merge pull request erlang#9421 from jhogberg/john/erts/spring-cleaning
Browse files Browse the repository at this point in the history
erts: Minor spring cleaning
  • Loading branch information
jhogberg authored Feb 18, 2025
2 parents b3de0d2 + 984b5a5 commit 661f25a
Show file tree
Hide file tree
Showing 24 changed files with 146 additions and 127 deletions.
6 changes: 3 additions & 3 deletions erts/emulator/beam/beam_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -406,9 +406,9 @@ Eterm error_atom[NUMBER_EXIT_CODES] = {
*
* This is needed to generate correct stacktraces when throwing errors from
* instructions that return like an ordinary function, such as call_nif. */
ErtsCodePtr erts_printable_return_address(Process* p, Eterm *E) {
Eterm *stack_bottom = STACK_START(p);
Eterm *scanner = E;
ErtsCodePtr erts_printable_return_address(const Process* p, const Eterm *E) {
const Eterm *stack_bottom = STACK_START(p);
const Eterm *scanner = E;

ASSERT(is_CP(scanner[0]));

Expand Down
6 changes: 4 additions & 2 deletions erts/emulator/beam/beam_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -296,11 +296,13 @@ extern ErtsCodePtr beam_call_trace_return; /* OpCode(i_call_trace_return) */
* @param[in] frame The frame to inspect. Must point at a CP.
* @param[out] return_address The return address of \p frame */
ERTS_GLB_INLINE
const Eterm *erts_inspect_frame(Eterm *frame, ErtsCodePtr *return_address);
const Eterm *erts_inspect_frame(const Eterm *frame,
ErtsCodePtr *return_address);

#if ERTS_GLB_INLINE_INCL_FUNC_DEF
ERTS_GLB_INLINE
const Eterm *erts_inspect_frame(Eterm *frame, ErtsCodePtr *return_address) {
const Eterm *erts_inspect_frame(const Eterm *frame,
ErtsCodePtr *return_address) {
ASSERT(is_CP(frame[0]));

if (ERTS_LIKELY(erts_frame_layout == ERTS_FRAME_LAYOUT_RA)) {
Expand Down
9 changes: 4 additions & 5 deletions erts/emulator/beam/erl_io_queue.c
Original file line number Diff line number Diff line change
Expand Up @@ -97,13 +97,13 @@ static ErtsIOQBinary *alloc_binary(Uint size, char *source, void **iov_base, int
}
}

Uint erts_ioq_size(ErtsIOQueue *q)
Uint erts_ioq_size(const ErtsIOQueue *q)
{
return q->size;
}

/* expand queue to hold n elements in tail or head */
static int expandq(ErtsIOQueue* q, int n, int tail)
static int expandq(ErtsIOQueue *q, int n, int tail)
/* tail: 0 if make room in head, make room in tail otherwise */
{
int h_sz; /* room before header */
Expand Down Expand Up @@ -376,8 +376,7 @@ int erts_ioq_deq(ErtsIOQueue *q, Uint size)
return 0;
}


Uint erts_ioq_peekqv(ErtsIOQueue *q, ErtsIOVec *ev) {
Uint erts_ioq_peekqv(const ErtsIOQueue *q, ErtsIOVec *ev) {
ASSERT(ev);

if (! q) {
Expand All @@ -396,7 +395,7 @@ Uint erts_ioq_peekqv(ErtsIOQueue *q, ErtsIOVec *ev) {
}
}

SysIOVec* erts_ioq_peekq(ErtsIOQueue *q, int* vlenp) /* length of io-vector */
SysIOVec* erts_ioq_peekq(const ErtsIOQueue *q, int* vlenp) /* length of io-vector */
{

if (q == NULL) {
Expand Down
8 changes: 4 additions & 4 deletions erts/emulator/beam/erl_io_queue.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,13 +93,13 @@ typedef struct erts_io_queue {

void erts_ioq_init(ErtsIOQueue *q, ErtsAlcType_t alct, int driver);
void erts_ioq_clear(ErtsIOQueue *q);
Uint erts_ioq_size(ErtsIOQueue *q);
Uint erts_ioq_size(const ErtsIOQueue *q);
int erts_ioq_enqv(ErtsIOQueue *q, ErtsIOVec *vec, Uint skip);
int erts_ioq_pushqv(ErtsIOQueue *q, ErtsIOVec *vec, Uint skip);
int erts_ioq_deq(ErtsIOQueue *q, Uint Uint);
Uint erts_ioq_peekqv(ErtsIOQueue *q, ErtsIOVec *ev);
SysIOVec *erts_ioq_peekq(ErtsIOQueue *q, int *vlenp);
Uint erts_ioq_sizeq(ErtsIOQueue *q);
Uint erts_ioq_peekqv(const ErtsIOQueue *q, ErtsIOVec *ev);
SysIOVec *erts_ioq_peekq(const ErtsIOQueue *q, int *vlenp);
Uint erts_ioq_sizeq(const ErtsIOQueue *q);

int erts_ioq_iolist_vec_len(Eterm obj, int* vsize, Uint* csize,
Uint* pvsize, Uint* pcsize,
Expand Down
8 changes: 4 additions & 4 deletions erts/emulator/beam/erl_nif.c
Original file line number Diff line number Diff line change
Expand Up @@ -424,10 +424,10 @@ int
erts_call_dirty_nif(ErtsSchedulerData *esdp,
Process *c_p,
ErtsCodePtr I,
Eterm *reg)
const Eterm *reg)
{
int exiting;
ERL_NIF_TERM *argv = (ERL_NIF_TERM *) reg;
const ERL_NIF_TERM *argv = (const ERL_NIF_TERM *) reg;
ErtsNativeFunc *nep = ERTS_I_BEAM_OP_TO_NFUNC(I);
const ErtsCodeMFA *codemfa = erts_code_to_codemfa(I);
NativeFunPtr dirty_nif = (NativeFunPtr) nep->trampoline.dfunc;
Expand Down Expand Up @@ -5372,14 +5372,14 @@ erts_nif_sched_init(ErtsSchedulerData *esdp)
}
}

int erts_nif_get_funcs(struct erl_module_nif* mod,
int erts_nif_get_funcs(const struct erl_module_nif* mod,
ErlNifFunc **funcs)
{
*funcs = mod->entry.funcs;
return mod->entry.num_of_funcs;
}

Module *erts_nif_get_module(struct erl_module_nif *nif_mod) {
Module *erts_nif_get_module(const struct erl_module_nif *nif_mod) {
return nif_mod->mod;
}

Expand Down
9 changes: 5 additions & 4 deletions erts/emulator/beam/global.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,16 +132,16 @@ extern void erts_nif_sched_init(ErtsSchedulerData *esdp);
extern void erts_nif_execute_on_halt(void);
extern void erts_nif_notify_halt(void);
extern void erts_nif_wait_calls(void);
extern int erts_nif_get_funcs(struct erl_module_nif*,
extern int erts_nif_get_funcs(const struct erl_module_nif*,
struct enif_func_t **funcs);
extern Module *erts_nif_get_module(struct erl_module_nif*);
extern Module *erts_nif_get_module(const struct erl_module_nif*);
extern Eterm erts_nif_call_function(Process *p, Process *tracee,
struct erl_module_nif*,
struct enif_func_t *,
int argc, Eterm *argv);

int erts_call_dirty_nif(ErtsSchedulerData *esdp, Process *c_p,
ErtsCodePtr I, Eterm *reg);
ErtsCodePtr I, const Eterm *reg);
ErtsMessage* erts_create_message_from_nif_env(ErlNifEnv* msg_env, Uint extra);


Expand Down Expand Up @@ -1216,7 +1216,8 @@ void erts_dirty_process_main(ErtsSchedulerData *);
Eterm build_stacktrace(Process* c_p, Eterm exc);
Eterm expand_error_value(Process* c_p, Uint freason, Eterm Value);
void erts_save_stacktrace(Process* p, struct StackTrace* s);
ErtsCodePtr erts_printable_return_address(Process* p, Eterm *E) ERTS_NOINLINE;
ErtsCodePtr erts_printable_return_address(const Process* p,
const Eterm *E) ERTS_NOINLINE;

/* erl_init.c */

Expand Down
8 changes: 4 additions & 4 deletions erts/emulator/beam/jit/arm/beam_asm.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1675,19 +1675,19 @@ class BeamModuleAssembler : public BeamAssembler,
}
}

enum Relation { none, consecutive, reverse_consecutive };
enum class Relation { none, consecutive, reverse_consecutive };

static Relation memory_relation(const arm::Mem &mem1,
const arm::Mem &mem2) {
if (mem1.hasBaseReg() && mem2.hasBaseReg() &&
mem1.baseId() == mem2.baseId()) {
if (mem1.offset() + 8 == mem2.offset()) {
return consecutive;
return Relation::consecutive;
} else if (mem1.offset() == mem2.offset() + 8) {
return reverse_consecutive;
return Relation::reverse_consecutive;
}
}
return none;
return Relation::none;
}

void flush_vars(const Variable<a64::Gp> &to1,
Expand Down
24 changes: 12 additions & 12 deletions erts/emulator/beam/jit/arm/beam_asm_module.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ void BeamModuleAssembler::embed_vararg_rodata(const Span<ArgVal> &args,

a.align(AlignMode::kData, 8);
switch (arg.getType()) {
case ArgVal::Literal: {
case ArgVal::Type::Literal: {
auto &patches = literals[arg.as<ArgLiteral>().get()].patches;
Label patch = a.newLabel();

Expand All @@ -130,22 +130,22 @@ void BeamModuleAssembler::embed_vararg_rodata(const Span<ArgVal> &args,
patches.push_back({patch, 0});
break;
}
case ArgVal::XReg:
case ArgVal::Type::XReg:
data.as_beam = make_loader_x_reg(arg.as<ArgXRegister>().get());
a.embed(&data.as_char, sizeof(data.as_beam));
break;
case ArgVal::YReg:
case ArgVal::Type::YReg:
data.as_beam = make_loader_y_reg(arg.as<ArgYRegister>().get());
a.embed(&data.as_char, sizeof(data.as_beam));
break;
case ArgVal::Label:
case ArgVal::Type::Label:
a.embedLabel(rawLabels[arg.as<ArgLabel>().get()]);
break;
case ArgVal::Immediate:
case ArgVal::Type::Immediate:
data.as_beam = arg.as<ArgImmed>().get();
a.embed(&data.as_char, sizeof(data.as_beam));
break;
case ArgVal::Word:
case ArgVal::Type::Word:
data.as_beam = arg.as<ArgWord>().get();
a.embed(&data.as_char, sizeof(data.as_beam));
break;
Expand Down Expand Up @@ -378,7 +378,7 @@ void BeamModuleAssembler::emit_aligned_label(const ArgLabel &Label,

void BeamModuleAssembler::emit_i_func_label(const ArgLabel &Label) {
flush_last_error();
emit_aligned_label(Label, ArgVal(ArgVal::Word, sizeof(UWord)));
emit_aligned_label(Label, ArgVal(ArgVal::Type::Word, sizeof(UWord)));
}

void BeamModuleAssembler::emit_on_load() {
Expand Down Expand Up @@ -775,11 +775,11 @@ void BeamModuleAssembler::emit_constant(const Constant &constant) {
a.embedLabel(rawLabels.at(value.as<ArgLabel>().get()));
} else {
switch (value.getType()) {
case ArgVal::BytePtr:
case ArgVal::Type::BytePtr:
strings.push_back({anchor, 0, value.as<ArgBytePtr>().get()});
a.embedUInt64(LLONG_MAX);
break;
case ArgVal::Catch: {
case ArgVal::Type::Catch: {
auto handler = rawLabels[value.as<ArgCatch>().get()];
catches.push_back({{anchor, 0, 0}, handler});

Expand All @@ -789,19 +789,19 @@ void BeamModuleAssembler::emit_constant(const Constant &constant) {
a.embedUInt64(INT_MAX);
break;
}
case ArgVal::Export: {
case ArgVal::Type::Export: {
auto index = value.as<ArgExport>().get();
imports[index].patches.push_back({anchor, 0, 0});
a.embedUInt64(LLONG_MAX);
break;
}
case ArgVal::FunEntry: {
case ArgVal::Type::FunEntry: {
auto index = value.as<ArgLambda>().get();
lambdas[index].patches.push_back({anchor, 0, 0});
a.embedUInt64(LLONG_MAX);
break;
}
case ArgVal::Literal: {
case ArgVal::Type::Literal: {
auto index = value.as<ArgLiteral>().get();
literals[index].patches.push_back({anchor, 0, 0});
a.embedUInt64(LLONG_MAX);
Expand Down
2 changes: 1 addition & 1 deletion erts/emulator/beam/jit/arm/instr_bif.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -700,7 +700,7 @@ void BeamGlobalAssembler::emit_bif_nif_epilogue(void) {
emit_enter_runtime();

a.mov(ARG1, c_p);
runtime_call<ErtsCodePtr (*)(Process *, Eterm *),
runtime_call<ErtsCodePtr (*)(const Process *, const Eterm *),
erts_printable_return_address>();

emit_leave_runtime();
Expand Down
6 changes: 3 additions & 3 deletions erts/emulator/beam/jit/arm/instr_bs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2062,8 +2062,8 @@ void BeamModuleAssembler::emit_i_bs_create_bin(const ArgLabel &Fail,
/* There is no way the call can fail on a 64-bit architecture. */
} else if (estimated_num_bits <= ERL_ONHEAP_BITS_LIMIT) {
static constexpr auto cur_bin_offset =
offsetof(ErtsSchedulerRegisters, aux_regs.d.erl_bits_state) +
offsetof(struct erl_bits_state, erts_current_bin);
offsetof(ErtsSchedulerRegisters,
aux_regs.d.erl_bits_state.erts_current_bin);
Uint need;

arm::Mem mem_bin_base = arm::Mem(scheduler_registers, cur_bin_offset);
Expand Down Expand Up @@ -2566,7 +2566,7 @@ void BeamModuleAssembler::emit_i_bs_create_bin(const ArgLabel &Fail,
break;
case am_string: {
ArgBytePtr string_ptr(
ArgVal(ArgVal::BytePtr, seg.src.as<ArgWord>().get()));
ArgVal(ArgVal::Type::BytePtr, seg.src.as<ArgWord>().get()));

comment("insert string");
ASSERT(seg.effectiveSize >= 0);
Expand Down
2 changes: 1 addition & 1 deletion erts/emulator/beam/jit/arm/instr_call.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ void BeamGlobalAssembler::emit_dispatch_return() {
void BeamModuleAssembler::emit_dispatch_return() {
#ifdef JIT_HARD_DEBUG
/* Validate return address and {x,0} */
emit_validate(ArgVal(ArgVal::Word, 1));
emit_validate(ArgVal(ArgVal::Type::Word, 1));
#endif

if (erts_alcu_enable_code_atags) {
Expand Down
2 changes: 1 addition & 1 deletion erts/emulator/beam/jit/arm/instr_common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ void BeamModuleAssembler::emit_validate(const ArgWord &Arity) {
emit_enter_runtime_frame();

for (unsigned i = 0; i < Arity.get(); i++) {
mov_arg(ARG1, ArgVal(ArgVal::XReg, i));
mov_arg(ARG1, ArgVal(ArgVal::Type::XReg, i));

emit_enter_runtime();
runtime_call<void (*)(Eterm), beam_jit_validate_term>();
Expand Down
4 changes: 2 additions & 2 deletions erts/emulator/beam/jit/arm/instr_select.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -496,12 +496,12 @@ void BeamModuleAssembler::emit_i_jump_on_val(const ArgSource &Src,
a.bind(data);
if (embedInText) {
for (const ArgVal &arg : args) {
ASSERT(arg.getType() == ArgVal::Label);
ASSERT(arg.getType() == ArgVal::Type::Label);
a.embedLabel(rawLabels[arg.as<ArgLabel>().get()]);
}
}

if (Fail.getType() == ArgVal::Immediate) {
if (Fail.getType() == ArgVal::Type::Immediate) {
a.bind(fail);
}
}
Expand Down
7 changes: 4 additions & 3 deletions erts/emulator/beam/jit/arm/instr_trace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ void BeamModuleAssembler::emit_return_trace() {

emit_leave_runtime<Update::eHeapAlloc>(1);

emit_deallocate(ArgVal(ArgVal::Word, BEAM_RETURN_TRACE_FRAME_SZ));
emit_deallocate(ArgVal(ArgVal::Type::Word, BEAM_RETURN_TRACE_FRAME_SZ));
emit_return();
}

Expand All @@ -185,7 +185,8 @@ void BeamModuleAssembler::emit_i_call_trace_return() {

emit_leave_runtime<Update::eHeapAlloc>(1);

emit_deallocate(ArgVal(ArgVal::Word, BEAM_RETURN_CALL_ACC_TRACE_FRAME_SZ));
emit_deallocate(
ArgVal(ArgVal::Type::Word, BEAM_RETURN_CALL_ACC_TRACE_FRAME_SZ));
emit_return();
}

Expand All @@ -203,7 +204,7 @@ void BeamModuleAssembler::emit_i_return_to_trace() {

emit_leave_runtime<Update::eHeapAlloc>(1);

emit_deallocate(ArgVal(ArgVal::Word, BEAM_RETURN_TO_TRACE_FRAME_SZ));
emit_deallocate(ArgVal(ArgVal::Type::Word, BEAM_RETURN_TO_TRACE_FRAME_SZ));
emit_return();
}

Expand Down
Loading

0 comments on commit 661f25a

Please sign in to comment.