Skip to content

Instantly share code, notes, and snippets.

@niner
Created February 22, 2020 13:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save niner/be4b8b5b77fd9d8349f16ae9bc413137 to your computer and use it in GitHub Desktop.
Save niner/be4b8b5b77fd9d8349f16ae9bc413137 to your computer and use it in GitHub Desktop.
diff --git a/src/core/args.c b/src/core/args.c
index 93dee1685..1299769a6 100644
--- a/src/core/args.c
+++ b/src/core/args.c
@@ -311,11 +311,11 @@ MVMArgInfo MVM_args_get_optional_pos_int(MVMThreadContext *tc, MVMArgProcContext
autounbox(tc, MVM_CALLSITE_ARG_INT, "integer", result);
return result;
}
-MVMArgInfo MVM_args_get_required_pos_num(MVMThreadContext *tc, MVMArgProcContext *ctx, MVMuint32 pos) {
+MVMnum64 MVM_args_get_required_pos_num(MVMThreadContext *tc, MVMArgProcContext *ctx, MVMuint32 pos) {
MVMArgInfo result;
args_get_pos(tc, ctx, pos, MVM_ARG_REQUIRED, result);
autounbox(tc, MVM_CALLSITE_ARG_NUM, "number", result);
- return result;
+ return result.arg.n64;
}
MVMArgInfo MVM_args_get_optional_pos_num(MVMThreadContext *tc, MVMArgProcContext *ctx, MVMuint32 pos) {
MVMArgInfo result;
diff --git a/src/core/args.h b/src/core/args.h
index cd16ee13e..c20c54d1d 100644
--- a/src/core/args.h
+++ b/src/core/args.h
@@ -63,7 +63,7 @@ MVMObject * MVM_args_get_required_pos_obj(MVMThreadContext *tc, MVMArgProcContex
MVMArgInfo MVM_args_get_optional_pos_obj(MVMThreadContext *tc, MVMArgProcContext *ctx, MVMuint32 pos);
MVMint64 MVM_args_get_required_pos_int(MVMThreadContext *tc, MVMArgProcContext *ctx, MVMuint32 pos);
MVMArgInfo MVM_args_get_optional_pos_int(MVMThreadContext *tc, MVMArgProcContext *ctx, MVMuint32 pos);
-MVMArgInfo MVM_args_get_required_pos_num(MVMThreadContext *tc, MVMArgProcContext *ctx, MVMuint32 pos);
+MVMnum64 MVM_args_get_required_pos_num(MVMThreadContext *tc, MVMArgProcContext *ctx, MVMuint32 pos);
MVMArgInfo MVM_args_get_optional_pos_num(MVMThreadContext *tc, MVMArgProcContext *ctx, MVMuint32 pos);
MVMString * MVM_args_get_required_pos_str(MVMThreadContext *tc, MVMArgProcContext *ctx, MVMuint32 pos);
MVMArgInfo MVM_args_get_optional_pos_str(MVMThreadContext *tc, MVMArgProcContext *ctx, MVMuint32 pos);
diff --git a/src/core/interp.c b/src/core/interp.c
index 47c205c13..057cae693 100644
--- a/src/core/interp.c
+++ b/src/core/interp.c
@@ -1077,7 +1077,7 @@ void MVM_interp_run(MVMThreadContext *tc, void (*initial_invoke)(MVMThreadContex
goto NEXT;
OP(param_rp_n):
GET_REG(cur_op, 0).n64 = MVM_args_get_required_pos_num(tc, &tc->cur_frame->params,
- GET_UI16(cur_op, 2)).arg.n64;
+ GET_UI16(cur_op, 2));
cur_op += 4;
goto NEXT;
OP(param_rp_s):
@@ -1423,7 +1423,7 @@ void MVM_interp_run(MVMThreadContext *tc, void (*initial_invoke)(MVMThreadContex
if (IS_CONCRETE(obj) && REPR(obj)->ID == MVM_REPR_ID_MVMCallCapture) {
MVMCallCapture *cc = (MVMCallCapture *)obj;
GET_REG(cur_op, 0).n64 = MVM_args_get_required_pos_num(tc, cc->body.apc,
- (MVMuint32)GET_REG(cur_op, 4).i64).arg.n64;
+ (MVMuint32)GET_REG(cur_op, 4).i64);
}
else {
MVM_exception_throw_adhoc(tc, "captureposarg_n needs a MVMCallCapture");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment