Skip to content

Instantly share code, notes, and snippets.

@timo
Created August 16, 2014 14:11
Show Gist options
  • Select an option

  • Save timo/414f465df7efa622148b to your computer and use it in GitHub Desktop.

Select an option

Save timo/414f465df7efa622148b to your computer and use it in GitHub Desktop.
diff --git a/src/jit/emit_x64.dasc b/src/jit/emit_x64.dasc
index 8e83090..256f6b5 100644
--- a/src/jit/emit_x64.dasc
+++ b/src/jit/emit_x64.dasc
@@ -929,6 +929,17 @@ void MVM_jit_emit_primitive(MVMThreadContext *tc, MVMJitGraph *jg,
|2:
break;
}
+ case MVM_OP_iscont: {
+ MVMint16 dst = ins->operands[0].reg.orig;
+ MVMint16 src = ins->operands[1].reg.orig;
+ | mov TMP1, WORK[src];
+ | test TMP1, TMP1;
+ | cmovnz TMP2, OBJECT:TMP1->st;
+ | cmovnz TMP1, STABLE:TMP2->container_spec;
+ | test TMP1, TMP1;
+ | setnz qword WORK[dst];
+ break;
+ }
case MVM_OP_sp_namedarg_used: {
MVMuint16 param = ins->operands[0].lit_i16;
| mov TMP1, FRAME->params.named_used;
diff --git a/src/jit/graph.c b/src/jit/graph.c
index c02bb08..5a0864b 100644
--- a/src/jit/graph.c
+++ b/src/jit/graph.c
@@ -674,6 +674,7 @@ static MVMint32 jgb_consume_ins(MVMThreadContext *tc, JitGraphBuilder *jgb,
case MVM_OP_getcode:
case MVM_OP_sp_fastcreate:
case MVM_OP_decont:
+ case MVM_OP_iscont:
case MVM_OP_sp_namedarg_used:
case MVM_OP_sp_findmeth:
case MVM_OP_hllboxtype_i:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment