Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions .github/workflows/build-and-test-macos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@ on: [push, pull_request]

jobs:
build-and-test:
runs-on: "macos-11"
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: ["macos-11"]
otp: ["23", "24", "25"]

steps:
# Setup
Expand All @@ -20,7 +24,7 @@ jobs:
submodules: 'recursive'

- name: "Install deps"
run: brew install gperf doxygen erlang@21 ninja
run: brew install gperf doxygen erlang@${{ matrix.otp }} ninja

# Builder info
- name: "System info"
Expand All @@ -40,13 +44,13 @@ jobs:
- name: "Build: run cmake"
working-directory: build
run: |
export PATH="/usr/local/opt/erlang@21/bin:$PATH"
export PATH="/usr/local/opt/erlang@${{ matrix.otp }}/bin:$PATH"
cmake -G Ninja -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl ..

- name: "Build: run ninja"
working-directory: build
run: |
export PATH="/usr/local/opt/erlang@21/bin:$PATH"
export PATH="/usr/local/opt/erlang@${{ matrix.otp }}/bin:$PATH"
ninja

# Test
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build-and-test-other.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ name: Build and Test on Other Architectures
on: [push, pull_request]

env:
otp_version: 21
elixir_version: 1.9
otp_version: 24
elixir_version: 1.14

jobs:
build-and-test-other:
Expand Down
24 changes: 24 additions & 0 deletions src/libAtomVM/defaultatoms.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,18 @@ static const char *const timeout_value_atom = "\xD" "timeout_value";
static const char *const machine_atom = "\x7" "machine";
static const char *const avm_floatsize_atom = "\xD" "avm_floatsize";

static const char *const append_atom = "\x6" "append";
static const char *const private_append_atom = "\xE" "private_append";
static const char *const binary_atom = "\x6" "binary";
static const char *const integer_atom = "\x7" "integer";
static const char *const little_atom = "\x6" "little";
static const char *const native_atom = "\x6" "native";
static const char *const string_atom = "\x6" "string";
static const char *const utf8_atom = "\x4" "utf8";
static const char *const utf16_atom = "\x5" "utf16";
static const char *const utf32_atom = "\x5" "utf32";
static const char *const badrecord_atom = "\x9" "badrecord";

void defaultatoms_init(GlobalContext *glb)
{
int ok = 1;
Expand Down Expand Up @@ -190,6 +202,18 @@ void defaultatoms_init(GlobalContext *glb)
ok &= globalcontext_insert_atom(glb, machine_atom) == MACHINE_ATOM_INDEX;
ok &= globalcontext_insert_atom(glb, avm_floatsize_atom) == AVM_FLOATSIZE_ATOM_INDEX;

ok &= globalcontext_insert_atom(glb, append_atom) == APPEND_ATOM_INDEX;
ok &= globalcontext_insert_atom(glb, private_append_atom) == PRIVATE_APPEND_ATOM_INDEX;
ok &= globalcontext_insert_atom(glb, binary_atom) == BINARY_ATOM_INDEX;
ok &= globalcontext_insert_atom(glb, integer_atom) == INTEGER_ATOM_INDEX;
ok &= globalcontext_insert_atom(glb, little_atom) == LITTLE_ATOM_INDEX;
ok &= globalcontext_insert_atom(glb, native_atom) == NATIVE_ATOM_INDEX;
ok &= globalcontext_insert_atom(glb, string_atom) == STRING_ATOM_INDEX;
ok &= globalcontext_insert_atom(glb, utf8_atom) == UTF8_ATOM_INDEX;
ok &= globalcontext_insert_atom(glb, utf16_atom) == UTF16_ATOM_INDEX;
ok &= globalcontext_insert_atom(glb, utf32_atom) == UTF32_ATOM_INDEX;
ok &= globalcontext_insert_atom(glb, badrecord_atom) == BADRECORD_ATOM_INDEX;

if (!ok) {
AVM_ABORT();
}
Expand Down
28 changes: 26 additions & 2 deletions src/libAtomVM/defaultatoms.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,27 @@ extern "C" {
#define MACHINE_ATOM_INDEX 65
#define AVM_FLOATSIZE_ATOM_INDEX 66

#define PLATFORM_ATOMS_BASE_INDEX 67
#define APPEND_ATOM_INDEX 67
#define PRIVATE_APPEND_ATOM_INDEX 68
#define BINARY_ATOM_INDEX 69
#define INTEGER_ATOM_INDEX 70
#define LITTLE_ATOM_INDEX 71
#define NATIVE_ATOM_INDEX 72
#define STRING_ATOM_INDEX 73
#define UTF8_ATOM_INDEX 74
#define UTF16_ATOM_INDEX 75
#define UTF32_ATOM_INDEX 76
#define BADRECORD_ATOM_INDEX 77

#define PLATFORM_ATOMS_BASE_INDEX 78

#define FALSE_ATOM TERM_FROM_ATOM_INDEX(FALSE_ATOM_INDEX)
#define TRUE_ATOM TERM_FROM_ATOM_INDEX(TRUE_ATOM_INDEX)

#define OK_ATOM term_from_atom_index(OK_ATOM_INDEX)
#define ERROR_ATOM term_from_atom_index(ERROR_ATOM_INDEX)

#define UNDEFINED_ATOM term_from_atom_index(UNDEFINED_ATOM_INDEX)
#define UNDEFINED_ATOM TERM_FROM_ATOM_INDEX(UNDEFINED_ATOM_INDEX)

#define BADARG_ATOM term_from_atom_index(BADARG_ATOM_INDEX)
#define BADARITH_ATOM term_from_atom_index(BADARITH_ATOM_INDEX)
Expand Down Expand Up @@ -199,6 +211,18 @@ extern "C" {
#define MACHINE_ATOM TERM_FROM_ATOM_INDEX(MACHINE_ATOM_INDEX)
#define AVM_FLOATSIZE_ATOM TERM_FROM_ATOM_INDEX(AVM_FLOATSIZE_ATOM_INDEX)

#define APPEND_ATOM TERM_FROM_ATOM_INDEX(APPEND_ATOM_INDEX)
#define PRIVATE_APPEND_ATOM TERM_FROM_ATOM_INDEX(PRIVATE_APPEND_ATOM_INDEX)
#define BINARY_ATOM TERM_FROM_ATOM_INDEX(BINARY_ATOM_INDEX)
#define INTEGER_ATOM TERM_FROM_ATOM_INDEX(INTEGER_ATOM_INDEX)
#define LITTLE_ATOM TERM_FROM_ATOM_INDEX(LITTLE_ATOM_INDEX)
#define NATIVE_ATOM TERM_FROM_ATOM_INDEX(NATIVE_ATOM_INDEX)
#define STRING_ATOM TERM_FROM_ATOM_INDEX(STRING_ATOM_INDEX)
#define UTF8_ATOM TERM_FROM_ATOM_INDEX(UTF8_ATOM_INDEX)
#define UTF16_ATOM TERM_FROM_ATOM_INDEX(UTF16_ATOM_INDEX)
#define UTF32_ATOM TERM_FROM_ATOM_INDEX(UTF32_ATOM_INDEX)
#define BADRECORD_ATOM TERM_FROM_ATOM_INDEX(BADRECORD_ATOM_INDEX)

void defaultatoms_init(GlobalContext *glb);

void platform_defaultatoms_init(GlobalContext *glb);
Expand Down
5 changes: 5 additions & 0 deletions src/libAtomVM/opcodes.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,9 @@
#define OP_BS_CONTEXT_TO_BINARY 130
#define OP_BS_TEST_UNIT 131
#define OP_BS_MATCH_STRING 132
#define OP_BS_INIT_WRITABLE 133
#define OP_BS_APPEND 134
#define OP_BS_PRIVATE_APPEND 135
#define OP_TRIM 136
#define OP_BS_INIT_BITS 137
#define OP_BS_UTF8_SIZE 144
Expand Down Expand Up @@ -155,5 +157,8 @@
#define OP_RECV_MARKER_CLEAR 174
#define OP_RECV_MARKER_RESERVE 175
#define OP_RECV_MARKER_USE 176
#define OP_BS_CREATE_BIN 177
#define OP_CALL_FUN2 178
#define OP_BADRECORD 180

#endif
Loading