Skip to content

Commit 0693eea

Browse files
committed
P6opaque container attr auto-viv.
1 parent d348d72 commit 0693eea

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/P6Opaque.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,8 @@ private void generateJVMType(ThreadContext tc, STable st, List<AttrInfo> attrInf
310310
getBoxedVisitor.visitInsn(Opcodes.POP);
311311
getBoxedVisitor.visitVarInsn(Opcodes.ALOAD, 0);
312312
getBoxedVisitor.visitIntInsn(Opcodes.BIPUSH, i);
313-
String methodDesc = "(I)Lorg/perl6/nqp/sixmodel/SixModelObject;";
313+
getBoxedVisitor.visitVarInsn(Opcodes.ALOAD, 1);
314+
String methodDesc = "(ILorg/perl6/nqp/runtime/ThreadContext;)Lorg/perl6/nqp/sixmodel/SixModelObject;";
314315
getBoxedVisitor.visitMethodInsn(Opcodes.INVOKEVIRTUAL, className, "autoViv", methodDesc);
315316
getBoxedVisitor.visitLabel(end);
316317
getBoxedVisitor.visitInsn(Opcodes.ARETURN);

src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/P6OpaqueBaseInstance.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,13 @@ public final int resolveAttribute(SixModelObject classHandle, String name) {
2222
throw new RuntimeException("No such attribute '" + name + "' for this object");
2323
}
2424

25-
public final SixModelObject autoViv(int slot) {
25+
public final SixModelObject autoViv(int slot, ThreadContext tc) {
2626
P6OpaqueREPRData rd = (P6OpaqueREPRData)this.st.REPRData;
2727
SixModelObject av = rd.autoVivContainers[slot];
2828
if (av instanceof TypeObject)
2929
return av;
30-
throw new RuntimeException("Cloning auto-viv container NYI");
30+
else
31+
return av.clone(tc);
3132
}
3233

3334
public SixModelObject clone(ThreadContext tc) {

0 commit comments

Comments
 (0)