Skip to content

Commit c1b189a

Browse files
committed
Implement dimensions/set_dimensions in VMArray.
1 parent 9a94d3e commit c1b189a

11 files changed

+29
-10
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* This is a fairly direct port of the QRPA logic implemented by Patrick Michaud in
1111
* the NQP repository. Thus the C-ish nature of the code. :-)
1212
*/
13-
public class VMArrayInstance extends SixModelObject {
13+
public class VMArrayInstance extends VMArrayInstanceBase {
1414
public int elems;
1515
public int start;
1616
public SixModelObject[] slots;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.perl6.nqp.sixmodel.reprs;
2+
3+
import java.lang.System;
4+
5+
import org.perl6.nqp.runtime.ExceptionHandling;
6+
import org.perl6.nqp.runtime.ThreadContext;
7+
import org.perl6.nqp.sixmodel.SixModelObject;
8+
9+
public class VMArrayInstanceBase extends SixModelObject {
10+
public long[] dimensions(ThreadContext tc) {
11+
return new long[] { this.elems(tc) };
12+
}
13+
14+
public void set_dimensions(ThreadContext tc, long[] dims) {
15+
if (dims.length != 1)
16+
throw ExceptionHandling.dieInternal(tc, "A dynamic array can only have a single dimension");
17+
this.set_elems(tc, dims[0]);
18+
}
19+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import org.perl6.nqp.runtime.ThreadContext;
77
import org.perl6.nqp.sixmodel.SixModelObject;
88

9-
public class VMArrayInstance_i extends SixModelObject {
9+
public class VMArrayInstance_i extends VMArrayInstanceBase {
1010
public int elems;
1111
public int start;
1212
public long[] slots;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import org.perl6.nqp.runtime.ThreadContext;
77
import org.perl6.nqp.sixmodel.SixModelObject;
88

9-
public class VMArrayInstance_i16 extends SixModelObject {
9+
public class VMArrayInstance_i16 extends VMArrayInstanceBase {
1010
public int elems;
1111
public int start;
1212
public short[] slots;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import org.perl6.nqp.runtime.ThreadContext;
77
import org.perl6.nqp.sixmodel.SixModelObject;
88

9-
public class VMArrayInstance_i32 extends SixModelObject {
9+
public class VMArrayInstance_i32 extends VMArrayInstanceBase {
1010
public int elems;
1111
public int start;
1212
public int[] slots;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import org.perl6.nqp.runtime.ThreadContext;
77
import org.perl6.nqp.sixmodel.SixModelObject;
88

9-
public class VMArrayInstance_i8 extends SixModelObject {
9+
public class VMArrayInstance_i8 extends VMArrayInstanceBase {
1010
public int elems;
1111
public int start;
1212
public byte[] slots;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import org.perl6.nqp.runtime.ThreadContext;
77
import org.perl6.nqp.sixmodel.SixModelObject;
88

9-
public class VMArrayInstance_n extends SixModelObject {
9+
public class VMArrayInstance_n extends VMArrayInstanceBase {
1010
public int elems;
1111
public int start;
1212
public double[] slots;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import org.perl6.nqp.runtime.ThreadContext;
77
import org.perl6.nqp.sixmodel.SixModelObject;
88

9-
public class VMArrayInstance_s extends SixModelObject {
9+
public class VMArrayInstance_s extends VMArrayInstanceBase {
1010
public int elems;
1111
public int start;
1212
public String[] slots;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import org.perl6.nqp.runtime.ThreadContext;
77
import org.perl6.nqp.sixmodel.SixModelObject;
88

9-
public class VMArrayInstance_u16 extends SixModelObject {
9+
public class VMArrayInstance_u16 extends VMArrayInstanceBase {
1010
public int elems;
1111
public int start;
1212
public short[] slots;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import org.perl6.nqp.runtime.ThreadContext;
77
import org.perl6.nqp.sixmodel.SixModelObject;
88

9-
public class VMArrayInstance_u32 extends SixModelObject {
9+
public class VMArrayInstance_u32 extends VMArrayInstanceBase {
1010
public int elems;
1111
public int start;
1212
public int[] slots;

0 commit comments

Comments
 (0)