Skip to content

Instantly share code, notes, and snippets.

View jnthn's full-sized avatar

Jonathan Worthington jnthn

View GitHub Profile
diff --git a/src/core/interp.c b/src/core/interp.c
index 9a84b61..6c3bc73 100644
--- a/src/core/interp.c
+++ b/src/core/interp.c
@@ -4372,6 +4372,7 @@ void MVM_interp_run(MVMThreadContext *tc, void (*initial_invoke)(MVMThreadContex
goto NEXT;
OP(sp_log):
if (tc->cur_frame->spesh_log_idx >= 0) {
+printf("logging at %d\n", (int)(GET_UI16(cur_op, 2) * MVM_SPESH_LOG_RUNS + tc->cur_frame->spesh_log_idx));
MVM_ASSIGN_REF(tc, &(tc->cur_frame->static_info->common.header),
diff --git a/src/Perl6/Optimizer.nqp b/src/Perl6/Optimizer.nqp
index 7c099bd..fc25f78 100644
--- a/src/Perl6/Optimizer.nqp
+++ b/src/Perl6/Optimizer.nqp
@@ -474,8 +474,8 @@ my class BlockVarOptimizer {
method is_poisoned() { $!poisoned }
method is_flattenable() {
+ return 0 if $!poisoned || $!uses_bindsig;
for %!decls {
diff --git a/src/Perl6/Optimizer.nqp b/src/Perl6/Optimizer.nqp
index 6632496..7c099bd 100644
--- a/src/Perl6/Optimizer.nqp
+++ b/src/Perl6/Optimizer.nqp
@@ -420,6 +420,9 @@ my class BlockVarOptimizer {
# If lowering is, for some reason, poisoned.
has $!poisoned;
+ # If p6bindsig is used.
+ has int $!uses_bindsig;
diff --git a/src/core/nativecall.c b/src/core/nativecall.c
index 2131230..ec0669b 100644
--- a/src/core/nativecall.c
+++ b/src/core/nativecall.c
@@ -284,7 +284,7 @@ static void * unmarshal_carray(MVMThreadContext *tc, MVMObject *value) {
}
/* Sets up a callback, caching the information to avoid duplicate work. */
-static char callback_handler(DCCallback *cb, DCArgs *args, DCValue *result, MVMNativeCallback *data);
+static char callback_handler(DCCallback *cb, DCArgs *args, DCValue *result, void *data);
diff --git a/src/6model/reprs/MVMMultiCache.c b/src/6model/reprs/MVMMultiCache.c
index 94d0943..bc93e3b 100644
--- a/src/6model/reprs/MVMMultiCache.c
+++ b/src/6model/reprs/MVMMultiCache.c
@@ -148,7 +148,7 @@ MVMObject * MVM_multi_cache_add(MVMThreadContext *tc, MVMObject *cache_obj, MVMO
MVMObject *arg = MVM_args_get_pos_obj(tc, apc, i, 1).arg.o;
if (arg) {
MVMContainerSpec const *contspec = STABLE(arg)->container_spec;
- if (contspec) {
+ if (contspec && IS_CONCRETE(arg)) {
diff --git a/lib/Panda/Builder.pm b/lib/Panda/Builder.pm
index b09aa0f..bff2994 100644
--- a/lib/Panda/Builder.pm
+++ b/lib/Panda/Builder.pm
@@ -25,7 +25,7 @@ sub topo-sort(@modules, %dependencies) {
}
sub path-to-module-name($path) {
- $path.subst(/^'lib/'/, '').subst(/^'lib6/'/, '').subst(/\.pm6?$/, '').subst('/', '::', :g);
+ $path.subst(/^'lib'<[/\\]>/, '').subst(/^'lib6'<[/\\]>/, '').subst(/\.pm6?$/, '').subst(/<[/\\]>/, '::', :g);
class A {
has $!a;
method BUILD(:$a) {
$!a := $a;
}
method a() { $!a }
}
compiling src\jit\jit.obj
jit.c
src\jit\jit.c(147) : error C2057: expected constant expression
src\jit\jit.c(147) : error C2466: cannot allocate an array of constant size 0
src\jit\jit.c(147) : error C2133: 'global_labels' : unknown size
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\cl.EXE"' :
return code '0x2'
Stop.
diff --git a/src/Perl6/Optimizer.nqp b/src/Perl6/Optimizer.nqp
index 239a171..d2ea6f3 100644
--- a/src/Perl6/Optimizer.nqp
+++ b/src/Perl6/Optimizer.nqp
@@ -31,6 +31,7 @@ my class Symbols {
has $!Block;
has $!PseudoStash;
has $!Routine;
+ has $!Nil;
diff --git a/src/core/IO.pm b/src/core/IO.pm
index 5067ef5..8039ca7 100644
--- a/src/core/IO.pm
+++ b/src/core/IO.pm
@@ -6,10 +6,15 @@ sub print(|) {
Bool::True
}
-sub say(|) {
+proto sub say(|) { * }