summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--darray.h5
-rw-r--r--yjit_codegen.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/darray.h b/darray.h
index b613d08489..ed6085fbcd 100644
--- a/darray.h
+++ b/darray.h
@@ -84,6 +84,11 @@
//
#define rb_darray_make(ptr_to_ary, size) rb_darray_make_impl((ptr_to_ary), size, sizeof(**(ptr_to_ary)), sizeof((*(ptr_to_ary))->data[0]))
+// Set the size of the array to zero without freeing the backing memory.
+// Allows reusing the same array.
+//
+#define rb_darray_clear(ary) (ary->meta.size = 0)
+
typedef struct rb_darray_meta {
int32_t size;
int32_t capa;
diff --git a/yjit_codegen.c b/yjit_codegen.c
index e99cc2622e..015e97bb73 100644
--- a/yjit_codegen.c
+++ b/yjit_codegen.c
@@ -142,6 +142,7 @@ jit_peek_at_self(jitstate_t *jit, ctx_t *ctx)
return jit->ec->cfp->self;
}
+RBIMPL_ATTR_MAYBE_UNUSED()
static VALUE
jit_peek_at_local(jitstate_t *jit, ctx_t *ctx, int n)
{
@@ -986,7 +987,7 @@ gen_expandarray(jitstate_t* jit, ctx_t* ctx)
// num is the number of requested values. If there aren't enough in the
// array then we're going to push on nils.
- rb_num_t num = (rb_num_t) jit_get_arg(jit, 0);
+ int num = (int)jit_get_arg(jit, 0);
val_type_t array_type = ctx_get_opnd_type(ctx, OPND_STACK(0));
x86opnd_t array_opnd = ctx_stack_pop(ctx, 1);