Navigation Menu

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/nativecall.c b/src/core/nativecall.c
index b96af40..37a7f75 100644
--- a/src/core/nativecall.c
+++ b/src/core/nativecall.c
@@ -435,6 +435,7 @@ static char callback_handler(DCCallback *cb, DCArgs *cb_args, DCValue *cb_result
/* Build a callsite and arguments buffer. */
MVMRegister *args = MVM_malloc(data->num_types * sizeof(MVMRegister));
+MVM_gc_allocate_gen2_default_set(data->tc); /*XXX*/
for (i = 1; i < data->num_types; i++) {
class A {
method omg() { say 'ooh, found' }
method FALLBACK($name, |c) { say "Cannot $name with {c.perl}" }
}
A.omg;
A.wtf('bbq', meat => 'sausage');
1..10
ok 1 - Cannot call chdir without an argument
ok 2 - chdir gave a true value
ok 3 - Directory has changed
not ok 4 - Current directory is 't' subfolder (absolute)
# Failed test 'Current directory is 't' subfolder (absolute)'
# at t\spec\S32-io\chdir.rakudo.moar line 26
# expected: 'C:\consulting\rakudo\t'
# got: 'C:\consulting\rakudo/t'
multi trait_mod:<is>(Attribute $attr, :$notted!) {
my $acc-name = $attr.name.substr(2);
$attr.package.HOW.add_method: $attr.package, 'not-' ~ $acc-name, method () {
not self."$acc-name"()
}
}
class A {
has $.x is notted;
}
diff --git a/src/6model/serialization.c b/src/6model/serialization.c
index 5e2bc38..788b073 100644
--- a/src/6model/serialization.c
+++ b/src/6model/serialization.c
@@ -570,6 +570,9 @@ void MVM_serialization_write_ref(MVMThreadContext *tc, MVMSerializationWriter *w
else if (REPR(ref)->ID == MVM_REPR_ID_MVMMultiCache) {
discrim = REFVAR_VM_NULL;
}
+ else if (REPR(ref)->ID == MVM_REPR_ID_MVMOSHandle) {
+ discrim = REFVAR_VM_NULL;
class A {
submethod DESTROY() {
say "HELP I'M DYING!";
}
}
for ^20 {
# Make an A
A.new;
perl6-m -e "my %h; for lines('jit_log'.IO) { /^ 'BAIL: op <' (\w+)/ && %h{$0}++ }; .say for %h.sort(-*.value)"
"takeclosure" => 345
"getattr_s" => 177
"ifnonnull" => 147
"checkarity" => 144
"decont" => 122
"newlexotic" => 108
"getdynlex" => 105
"smrt_strify" => 67
"hllboxtype_i" => 63
diff --git a/src/core/frame.c b/src/core/frame.c
index 383a145..ea305ee 100644
--- a/src/core/frame.c
+++ b/src/core/frame.c
@@ -572,9 +572,13 @@ static MVMuint64 remove_one_frame(MVMThreadContext *tc, MVMuint8 unwind) {
* specialization. */
if (returner->spesh_cand && returner->spesh_log_idx >= 0) {
if (returner->spesh_cand->osr_logging) {
- /* Didn't achieve enough log entries to complete the OSR; just
- * drop it to normal logging. */
diff --git a/src/core/interp.c b/src/core/interp.c
index 7cea172..efe163e 100644
--- a/src/core/interp.c
+++ b/src/core/interp.c
@@ -4370,16 +4370,18 @@ void MVM_interp_run(MVMThreadContext *tc, void (*initial_invoke)(MVMThreadContex
GET_REG(cur_op, 4).o, GET_REG(cur_op, 6).o);
cur_op += 8;
goto NEXT;
- OP(sp_log):
- if (tc->cur_frame->spesh_log_idx >= 0) {
diff --git a/src/core/interp.c b/src/core/interp.c
index 9a84b61..7cea172 100644
--- a/src/core/interp.c
+++ b/src/core/interp.c
@@ -4383,8 +4383,8 @@ void MVM_interp_run(MVMThreadContext *tc, void (*initial_invoke)(MVMThreadContex
OP(sp_osrfinalize): {
MVMSpeshCandidate *cand = tc->cur_frame->spesh_cand;
if (cand) {
- cand->log_enter_idx++;
tc->cur_frame->spesh_log_idx = cand->log_enter_idx;