Ticket #715 (closed bug: fixed)
[bug] various operations create (incorrect) PMCProxy objects in HLL namespaces
| Reported by: | pmichaud | Owned by: | |
|---|---|---|---|
| Priority: | blocker | Milestone: | |
| Component: | core | Version: | 1.2.0 |
| Severity: | high | Keywords: | tcl blocker |
| Cc: | coke | Language: | tcl |
| Patch status: | Platform: |
Description
I'm opening this ticket from the thread starting at http://lists.parrot.org/pipermail/parrot-dev/2009-May/002297.html . Essentially, there are a variety of operations that can cause PMCProxy objects to be incorrectly generated in HLL namespaces.
Here's an example:
$ ./parrot --version
This is Parrot version 1.2.0-devel built for i386-linux.
Copyright (C) 2001-2009, Parrot Foundation.
This code is distributed under the terms of the Artistic License 2.0.
For more details, see the full text of the license in the LICENSE file
included in the Parrot source tree.
$ cat x.pir
.HLL 'foo'
.sub 'main' :main
$P0 = new 'Class'
$I0 = isa $P0, 'Sub'
$P1 = get_root_global ['foo'], 'Sub'
say $P1
.end
$ ./parrot x.pir
Sub
$
Clearly an entry for 'Sub' should not be made in the foo? HLL namespace.
This behavior did not exist in 1.0.0 (which means we need to correct it prior to 1.4 release).
$ ./parrot --version
This is Parrot version 1.0.0-devel built for i386-linux.
Copyright (C) 2001-2009, Parrot Foundation.
This code is distributed under the terms of the Artistic License 2.0.
For more details, see the full text of the license in the LICENSE file
included in the Parrot source tree.
$ cat x.pir
.HLL 'foo'
.sub 'main' :main
$P0 = new 'Class'
$I0 = isa $P0, 'Sub'
$P1 = get_root_global ['foo'], 'Sub'
say $P1
.end
$ ./parrot x.pir
Null PMC in say
current instr.: 'main' pc 11 (x.pir:8)
$
I suspect that ultimately the bug is that Parrot_oo_get_class and Parrot_oo_get_class_str are creating PMCProxy objects in namespaces they have no business creating things in.
IIUC, partcl is currently blocking on this ticket.
Pm
