Ticket #365 (closed bug: fixed)

Opened 5 years ago

Last modified 5 years ago

i386 NCI jit depends on PMC_struct_val

Reported by: cotto Owned by:
Priority: normal Milestone:
Component: core Version:
Severity: medium Keywords: jit
Cc: Language:
Patch status: Platform:

Description

In r36919, which updates the NCI PMC to use ATTRs, there's a workaround (src/pmc/nci.pmc:317) to keep i386 jit from exploding. Something in the jit code is using the value of the UnionVal where it should be using the ATTR. I don't know how deep this goes, but it needs to be fixed before the UnionVal deprecation can be completed.

Attachments

nci_jit_fix_tt365.patch Download (2.9 KB) - added by cotto 5 years ago.
patch to stop NCI JIT code from using PMC_struct_val

Change History

Changed 5 years ago by cotto

Here's a nice minimal test case that crashes without the workaround, but works fine with it:

.sub _main
    .local pmc pmc1
    $P0 = new ['Integer']
    $P0 = 10
    $I0 = 20
    ne $P0, $I0, 1
.end

Changed 5 years ago by cotto

patch to stop NCI JIT code from using PMC_struct_val

Changed 5 years ago by cotto

Infinoid wrote a patch that fixes this bug, a version of which is attached. All tests pass with the patch applied, but Infinoid says it needs review. Once someone acquainted with the JIT arts has had a chance to review (and possibly fix) the patch, it can be applied and this ticket can be resolved.

Changed 5 years ago by whiteknight

  • keywords jit added
  • component changed from none to core

The patch looks sane to me. I've got some things I want to test on it, but I don't see why it wouldn't work as-is. +1 from me.

Changed 5 years ago by cotto

  • status changed from new to closed
  • resolution set to fixed

Fixed in r37997. Thanks for playing!

Note: See TracTickets for help on using tickets.