Skip to content

Commit

Permalink
Stub the NativeCall and CPointer REPRs.
Browse files Browse the repository at this point in the history
  • Loading branch information
arnsholt committed Sep 5, 2013
1 parent cc25bbc commit 0d2e7b8
Show file tree
Hide file tree
Showing 6 changed files with 118 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/vm/jvm/runtime/org/perl6/nqp/runtime/NativeCallOps.java
Expand Up @@ -4,6 +4,8 @@

public final class NativeCallOps {
public static long init() {
/* Nothing to do here. The REPRs are all registered over in
* REPRRegistry.java. */
return 1L;
}

Expand Down
4 changes: 4 additions & 0 deletions src/vm/jvm/runtime/org/perl6/nqp/sixmodel/REPRRegistry.java
Expand Up @@ -7,12 +7,14 @@
import org.perl6.nqp.sixmodel.reprs.CodeRefREPR;
import org.perl6.nqp.sixmodel.reprs.ContextRef;
import org.perl6.nqp.sixmodel.reprs.Continuation;
import org.perl6.nqp.sixmodel.reprs.CPointer;
import org.perl6.nqp.sixmodel.reprs.IOHandle;
import org.perl6.nqp.sixmodel.reprs.JavaWrap;
import org.perl6.nqp.sixmodel.reprs.KnowHOWAttribute;
import org.perl6.nqp.sixmodel.reprs.KnowHOWREPR;
import org.perl6.nqp.sixmodel.reprs.Lexotic;
import org.perl6.nqp.sixmodel.reprs.MultiCache;
import org.perl6.nqp.sixmodel.reprs.NativeCall;
import org.perl6.nqp.sixmodel.reprs.NFA;
import org.perl6.nqp.sixmodel.reprs.P6Opaque;
import org.perl6.nqp.sixmodel.reprs.P6bigint;
Expand Down Expand Up @@ -74,5 +76,7 @@ private static void addREPR(String name, REPR REPR) {
addREPR("IOHandle", new IOHandle());
addREPR("P6bigint", new P6bigint());
addREPR("MultiCache", new MultiCache());
addREPR("NativeCall", new NativeCall());
addREPR("CPointer", new CPointer());
}
}
38 changes: 38 additions & 0 deletions src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/CPointer.java
@@ -0,0 +1,38 @@
package org.perl6.nqp.sixmodel.reprs;

import org.perl6.nqp.sixmodel.REPR;
import org.perl6.nqp.sixmodel.SerializationReader;
import org.perl6.nqp.sixmodel.SixModelObject;
import org.perl6.nqp.sixmodel.STable;
import org.perl6.nqp.sixmodel.TypeObject;
import org.perl6.nqp.runtime.ExceptionHandling;
import org.perl6.nqp.runtime.ThreadContext;


public class CPointer extends REPR {
public SixModelObject type_object_for(ThreadContext tc, SixModelObject HOW) {
STable st = new STable(this, HOW);
st.REPRData = null; /* No REPR data needed. */
SixModelObject obj = new TypeObject();
obj.st = st;
st.WHAT = obj;
return st.WHAT;
}

public SixModelObject allocate(ThreadContext tc, STable st) {
SixModelObject obj = new CPointerInstance();
obj.st = st;
return obj;
}

public SixModelObject deserialize_stub(ThreadContext tc, STable st) {
/* This REPR can't be serialized. */
ExceptionHandling.dieInternal(tc, "Can't deserialize_stub a CPointer object.");

return null;
}

public void deserialize_finish(ThreadContext tc, STable st, SerializationReader reader, SixModelObject obj) {
ExceptionHandling.dieInternal(tc, "Can't deserialize_finish a CPointer object.");
}
}
@@ -0,0 +1,7 @@
package org.perl6.nqp.sixmodel.reprs;

import org.perl6.nqp.sixmodel.SixModelObject;

public class CPointerInstance extends SixModelObject {
/* Nothing here yet. */
}
38 changes: 38 additions & 0 deletions src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/NativeCall.java
@@ -0,0 +1,38 @@
package org.perl6.nqp.sixmodel.reprs;

import org.perl6.nqp.sixmodel.REPR;
import org.perl6.nqp.sixmodel.SerializationReader;
import org.perl6.nqp.sixmodel.SixModelObject;
import org.perl6.nqp.sixmodel.STable;
import org.perl6.nqp.sixmodel.TypeObject;
import org.perl6.nqp.runtime.ExceptionHandling;
import org.perl6.nqp.runtime.ThreadContext;


public class NativeCall extends REPR {
public SixModelObject type_object_for(ThreadContext tc, SixModelObject HOW) {
STable st = new STable(this, HOW);
st.REPRData = null; /* No REPR data needed. */
SixModelObject obj = new TypeObject();
obj.st = st;
st.WHAT = obj;
return st.WHAT;
}

public SixModelObject allocate(ThreadContext tc, STable st) {
SixModelObject obj = new NativeCallInstance();
obj.st = st;
return obj;
}

public SixModelObject deserialize_stub(ThreadContext tc, STable st) {
/* This REPR can't be serialized. */
ExceptionHandling.dieInternal(tc, "Can't deserialize_stub a NativeCall object.");

return null;
}

public void deserialize_finish(ThreadContext tc, STable st, SerializationReader reader, SixModelObject obj) {
ExceptionHandling.dieInternal(tc, "Can't deserialize_finish a NativeCall object.");
}
}
@@ -0,0 +1,29 @@
package org.perl6.nqp.sixmodel.reprs;

import org.perl6.nqp.sixmodel.SixModelObject;

public class NativeCallInstance extends SixModelObject {
/* Constants. Might be more idiomatic Java to move these to an enum. */
public static final byte ARG_VOID = 0;
public static final byte ARG_CHAR = 2;
public static final byte ARG_SHORT = 4;
public static final byte ARG_INT = 6;
public static final byte ARG_LONG = 8;
public static final byte ARG_LONGLONG = 10;
public static final byte ARG_FLOAT = 12;
public static final byte ARG_DOUBLE = 14;
public static final byte ARG_ASCIISTR = 16;
public static final byte ARG_UTF8STR = 18;
public static final byte ARG_UTF16STR = 20;
public static final byte ARG_CSTRUCT = 22;
public static final byte ARG_CARRAY = 24;
public static final byte ARG_CALLBACK = 26;
public static final byte ARG_CPOINTER = 28;
public static final byte ARG_TYPE_MASK = 30;

/* Flag for whether we should free a string after passing it or not. These
* are going away once the array handling is refactored.*/
public static final byte ARG_NO_FREE_STR = 0;
public static final byte ARG_FREE_STR = 1;
public static final byte ARG_FREE_STR_MASK = 1;
}

0 comments on commit 0d2e7b8

Please sign in to comment.