RPA Toolkit
added string pointer in rvmreg_t
authorMartin Stoilov <martin@rpasearch.com>
Tue, 15 Feb 2011 07:01:14 +0000 (23:01 -0800)
committerMartin Stoilov <martin@rpasearch.com>
Tue, 15 Feb 2011 07:01:14 +0000 (23:01 -0800)
arch/linux/x86_64/rtypes.h
rvm/rvmcpu.h
rvm/rvmreg.h
tests/regex-test.c

index a408dcf..03df991 100644 (file)
@@ -36,7 +36,7 @@ typedef float rfloat;
 typedef rint rboolean;
 typedef void *rpointer;
 typedef const void *rconstpointer;
-typedef struct {ruint32 p1; ruint32 p2;} rpair;
+typedef struct {ruint32 p1; ruint32 p2;} rpair_t;
 
 /*
  * Atomic operations (Architecture Dependent)
index c032655..d274257 100644 (file)
@@ -284,7 +284,7 @@ struct rvm_asmins_s {
        union {
                ruint64 u;
                rdouble d;
-               rpair p;
+               rpair_t p;
        } data;
        ruint16 op1:RVM_OPERAND_BITS;
        ruint16 op2:RVM_OPERAND_BITS;
@@ -349,6 +349,7 @@ rvmreg_t *rvm_cpu_alloc_global(rvmcpu_t *cpu);
 int rvm_cpu_setreg(rvmcpu_t *cpu, rword regnum, const rvmreg_t *src);
 rvmreg_t * rvm_cpu_getreg(rvmcpu_t *cpu, rword regnum);
 rvm_asmins_t rvm_asm(rword opcode, rword op1, rword op2, rword op3, rword data);
+rvm_asmins_t rvm_asma(rword opcode, rword op1, rword op2, rword op3, rchar *data, rulong size);
 rvm_asmins_t rvm_asml(rword opcode, rword op1, rword op2, rword op3, rlong data);
 rvm_asmins_t rvm_asmb(rword opcode, rword op1, rword op2, rword op3, rword data);
 rvm_asmins_t rvm_asmd(rword opcode, rword op1, rword op2, rword op3, rdouble data);
index c062dac..e9987e2 100644 (file)
@@ -21,16 +21,15 @@ extern "C" {
 #define RVM_DTYPE_BOOLEAN 3
 #define RVM_DTYPE_DOUBLE 4
 #define RVM_DTYPE_PAIR 5
-#define RVM_DTYPE_STRING 6
-#define RVM_DTYPE_ARRAY 7
-#define RVM_DTYPE_HARRAY 8
-#define RVM_DTYPE_NAN 9
-#define RVM_DTYPE_UNDEF 10
-#define RVM_DTYPE_JSOBJECT 11
-#define RVM_DTYPE_FUNCTION 12
-#define RVM_DTYPE_SWIID 13                     /* SWI ID */
-#define RVM_DTYPE_RELOCPTR 14          /* Relocation, using pointers */
-#define RVM_DTYPE_RELOCINDEX 15                /* Relocation, using offsets */
+#define RVM_DTYPE_UNDEF 6
+#define RVM_DTYPE_STRPTR 7
+#define RVM_DTYPE_STRING 8
+#define RVM_DTYPE_ARRAY 9
+#define RVM_DTYPE_HARRAY 10
+#define RVM_DTYPE_NAN 11
+#define RVM_DTYPE_JSOBJECT 12
+#define RVM_DTYPE_FUNCTION 13
+#define RVM_DTYPE_SWIID 14
 #define RVM_DTYPE_USER 16
 #define RVM_DTYPE_SIZE (1 << 5)
 #define RVM_DTYPE_MASK (RVM_DTYPE_SIZE - 1)
@@ -116,16 +115,17 @@ typedef ruint16 rvmreg_flags_t;
 typedef struct rvmreg_s {
        union {
                ruint64 u64;
-               rpair pair;
                rword w;
                rlong l;
                rpointer p;
                rdouble d;
+               rchar *s;
+               rpair_t pair;
                ruint8 c[RVM_MIN_REGSIZE];
        } v;
+       ruint32 size;
        rvmreg_type_t type;
        rvmreg_flags_t flags;
-       ruint32 size;
 } rvmreg_t;
 
 /* Create array with rvmreg elements */
index 9c2063a..a096349 100644 (file)
@@ -218,7 +218,7 @@ static void rpa_matchrng(rvmcpu_t *cpu, rvm_asmins_t *ins)
 {
        rpastat_t *stat = (rpastat_t *)cpu->userdata1;
        rlong tp = RVM_CPUREG_GETL(cpu, TP);
-       rpair op1 = RVM_CPUREG_GETPAIR(cpu, ins->op1);
+       rpair_t op1 = RVM_CPUREG_GETPAIR(cpu, ins->op1);
 
        RVM_STATUS_UPDATE(cpu, RVM_STATUS_Z, (!(cpu->status & RVM_STATUS_V) && stat->instack[tp].wc >= op1.p1 && stat->instack[tp].wc <= op1.p2) ? 1 : 0);
 }