summaryrefslogtreecommitdiff
path: root/yjit_core.h
diff options
context:
space:
mode:
authorMaxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>2021-04-01 16:56:20 -0400
committerAlan Wu <XrXr@users.noreply.github.com>2021-10-20 18:19:32 -0400
commitc299112fd7eb4432f3fdc83a9f5716e8e79249f4 (patch)
tree7b9bdaf2a2e890301882aad451f5b376f656215b /yjit_core.h
parent215a2f401068fe0afc18a22377082d0d3d8644fd (diff)
use ctx_stack_push_self()
Diffstat (limited to 'yjit_core.h')
-rw-r--r--yjit_core.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/yjit_core.h b/yjit_core.h
index 6001838c50..1a55408a7b 100644
--- a/yjit_core.h
+++ b/yjit_core.h
@@ -31,7 +31,8 @@ typedef enum yjit_type_enum
ETYPE_UNKNOWN = 0,
ETYPE_NIL,
ETYPE_FIXNUM,
- //ETYPE_ARRAY
+ ETYPE_ARRAY,
+ ETYPE_HASH
//ETYPE_SYMBOL
//ETYPE_STRING
@@ -63,9 +64,10 @@ STATIC_ASSERT(val_type_size, sizeof(val_type_t) == 1);
// Could be any immediate
#define TYPE_IMM ( (val_type_t){ .is_imm = 1 } )
-// Immediate types
#define TYPE_NIL ( (val_type_t){ .is_imm = 1, .type = ETYPE_NIL } )
#define TYPE_FIXNUM ( (val_type_t){ .is_imm = 1, .type = ETYPE_FIXNUM } )
+#define TYPE_ARRAY ( (val_type_t){ .is_heap = 1, .type = ETYPE_ARRAY } )
+#define TYPE_HASH ( (val_type_t){ .is_heap = 1, .type = ETYPE_HASH } )
typedef enum yjit_temp_loc
{
@@ -215,6 +217,7 @@ typedef struct yjit_block_version
// Context object methods
x86opnd_t ctx_sp_opnd(ctx_t* ctx, int32_t offset_bytes);
x86opnd_t ctx_stack_push(ctx_t* ctx, val_type_t type);
+x86opnd_t ctx_stack_push_self(ctx_t* ctx);
x86opnd_t ctx_stack_pop(ctx_t* ctx, size_t n);
x86opnd_t ctx_stack_opnd(ctx_t* ctx, int32_t idx);
val_type_t ctx_get_temp_type(const ctx_t* ctx, size_t idx);