[Pcre-svn] [880] code/trunk: JIT compiler update (rename GEN…

Top Page
Delete this message
Author: Subversion repository
Date:  
To: pcre-svn
Subject: [Pcre-svn] [880] code/trunk: JIT compiler update (rename GENERAL to SAVED)
Revision: 880
          http://vcs.pcre.org/viewvc?view=rev&revision=880
Author:   zherczeg
Date:     2012-01-15 17:23:37 +0000 (Sun, 15 Jan 2012)


Log Message:
-----------
JIT compiler update (rename GENERAL to SAVED)

Modified Paths:
--------------
    code/trunk/pcre_jit_compile.c
    code/trunk/sljit/sljitLir.c
    code/trunk/sljit/sljitLir.h
    code/trunk/sljit/sljitNativeARM_Thumb2.c
    code/trunk/sljit/sljitNativeARM_v5.c
    code/trunk/sljit/sljitNativeMIPS_common.c
    code/trunk/sljit/sljitNativePPC_common.c
    code/trunk/sljit/sljitNativeX86_32.c
    code/trunk/sljit/sljitNativeX86_64.c
    code/trunk/sljit/sljitNativeX86_common.c


Modified: code/trunk/pcre_jit_compile.c
===================================================================
--- code/trunk/pcre_jit_compile.c    2012-01-15 15:50:06 UTC (rev 879)
+++ code/trunk/pcre_jit_compile.c    2012-01-15 17:23:37 UTC (rev 880)
@@ -358,12 +358,12 @@
 #define TMP1          SLJIT_TEMPORARY_REG1
 #define TMP2          SLJIT_TEMPORARY_REG3
 #define TMP3          SLJIT_TEMPORARY_EREG2
-#define STR_PTR       SLJIT_GENERAL_REG1
-#define STR_END       SLJIT_GENERAL_REG2
+#define STR_PTR       SLJIT_SAVED_REG1
+#define STR_END       SLJIT_SAVED_REG2
 #define STACK_TOP     SLJIT_TEMPORARY_REG2
-#define STACK_LIMIT   SLJIT_GENERAL_REG3
-#define ARGUMENTS     SLJIT_GENERAL_EREG1
-#define CALL_COUNT    SLJIT_GENERAL_EREG2
+#define STACK_LIMIT   SLJIT_SAVED_REG3
+#define ARGUMENTS     SLJIT_SAVED_EREG1
+#define CALL_COUNT    SLJIT_SAVED_EREG2
 #define RETURN_ADDR   SLJIT_TEMPORARY_EREG1


/* Locals layout. */
@@ -1201,7 +1201,7 @@
int i;
/* At this point we can freely use all temporary registers. */
/* TMP1 returns with begin - 1. */
-OP2(SLJIT_SUB, SLJIT_TEMPORARY_REG1, 0, SLJIT_MEM1(SLJIT_GENERAL_REG1), SLJIT_OFFSETOF(jit_arguments, begin), SLJIT_IMM, IN_UCHARS(1));
+OP2(SLJIT_SUB, SLJIT_TEMPORARY_REG1, 0, SLJIT_MEM1(SLJIT_SAVED_REG1), SLJIT_OFFSETOF(jit_arguments, begin), SLJIT_IMM, IN_UCHARS(1));
if (length < 8)
{
for (i = 0; i < length; i++)
@@ -1225,24 +1225,24 @@
struct sljit_jump *earlyexit;

/* At this point we can freely use all registers. */
-OP1(SLJIT_MOV, SLJIT_GENERAL_REG3, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(1));
+OP1(SLJIT_MOV, SLJIT_SAVED_REG3, 0, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(1));
OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), OVECTOR(1), STR_PTR, 0);

OP1(SLJIT_MOV, SLJIT_TEMPORARY_REG1, 0, ARGUMENTS, 0);
OP1(SLJIT_MOV_SI, SLJIT_TEMPORARY_REG2, 0, SLJIT_MEM1(SLJIT_TEMPORARY_REG1), SLJIT_OFFSETOF(jit_arguments, offsetcount));
OP2(SLJIT_SUB, SLJIT_TEMPORARY_REG3, 0, SLJIT_MEM1(SLJIT_TEMPORARY_REG1), SLJIT_OFFSETOF(jit_arguments, offsets), SLJIT_IMM, sizeof(int));
OP1(SLJIT_MOV, SLJIT_TEMPORARY_REG1, 0, SLJIT_MEM1(SLJIT_TEMPORARY_REG1), SLJIT_OFFSETOF(jit_arguments, begin));
-OP2(SLJIT_ADD, SLJIT_GENERAL_REG1, 0, SLJIT_LOCALS_REG, 0, SLJIT_IMM, OVECTOR_START);
+OP2(SLJIT_ADD, SLJIT_SAVED_REG1, 0, SLJIT_LOCALS_REG, 0, SLJIT_IMM, OVECTOR_START);
/* Unlikely, but possible */
earlyexit = CMP(SLJIT_C_EQUAL, SLJIT_TEMPORARY_REG2, 0, SLJIT_IMM, 0);
loop = LABEL();
-OP2(SLJIT_SUB, SLJIT_GENERAL_REG2, 0, SLJIT_MEM1(SLJIT_GENERAL_REG1), 0, SLJIT_TEMPORARY_REG1, 0);
-OP2(SLJIT_ADD, SLJIT_GENERAL_REG1, 0, SLJIT_GENERAL_REG1, 0, SLJIT_IMM, sizeof(sljit_w));
+OP2(SLJIT_SUB, SLJIT_SAVED_REG2, 0, SLJIT_MEM1(SLJIT_SAVED_REG1), 0, SLJIT_TEMPORARY_REG1, 0);
+OP2(SLJIT_ADD, SLJIT_SAVED_REG1, 0, SLJIT_SAVED_REG1, 0, SLJIT_IMM, sizeof(sljit_w));
/* Copy the integer value to the output buffer */
#ifdef COMPILE_PCRE16
-OP2(SLJIT_ASHR, SLJIT_GENERAL_REG2, 0, SLJIT_GENERAL_REG2, 0, SLJIT_IMM, 1);
+OP2(SLJIT_ASHR, SLJIT_SAVED_REG2, 0, SLJIT_SAVED_REG2, 0, SLJIT_IMM, 1);
#endif
-OP1(SLJIT_MOVU_SI, SLJIT_MEM1(SLJIT_TEMPORARY_REG3), sizeof(int), SLJIT_GENERAL_REG2, 0);
+OP1(SLJIT_MOVU_SI, SLJIT_MEM1(SLJIT_TEMPORARY_REG3), sizeof(int), SLJIT_SAVED_REG2, 0);
OP2(SLJIT_SUB | SLJIT_SET_E, SLJIT_TEMPORARY_REG2, 0, SLJIT_TEMPORARY_REG2, 0, SLJIT_IMM, 1);
JUMPTO(SLJIT_C_NOT_ZERO, loop);
JUMPHERE(earlyexit);
@@ -1253,11 +1253,11 @@
OP2(SLJIT_ADD, SLJIT_TEMPORARY_REG1, 0, SLJIT_LOCALS_REG, 0, SLJIT_IMM, OVECTOR_START + topbracket * 2 * sizeof(sljit_w));
OP1(SLJIT_MOV, SLJIT_TEMPORARY_REG2, 0, SLJIT_IMM, topbracket + 1);

- /* OVECTOR(0) is never equal to SLJIT_GENERAL_REG3. */
+ /* OVECTOR(0) is never equal to SLJIT_SAVED_REG3. */
loop = LABEL();
OP1(SLJIT_MOVU, SLJIT_TEMPORARY_REG3, 0, SLJIT_MEM1(SLJIT_TEMPORARY_REG1), -(2 * (sljit_w)sizeof(sljit_w)));
OP2(SLJIT_SUB, SLJIT_TEMPORARY_REG2, 0, SLJIT_TEMPORARY_REG2, 0, SLJIT_IMM, 1);
- CMPTO(SLJIT_C_EQUAL, SLJIT_TEMPORARY_REG3, 0, SLJIT_GENERAL_REG3, 0, loop);
+ CMPTO(SLJIT_C_EQUAL, SLJIT_TEMPORARY_REG3, 0, SLJIT_SAVED_REG3, 0, loop);
OP1(SLJIT_MOV, SLJIT_RETURN_REG, 0, SLJIT_TEMPORARY_REG2, 0);
}
else
@@ -6484,8 +6484,8 @@
if ((re->flags & PCRE_REQCHSET) != 0)
OP1(SLJIT_MOV, SLJIT_MEM1(SLJIT_LOCALS_REG), REQ_CHAR_PTR, SLJIT_TEMPORARY_REG1, 0);

-OP1(SLJIT_MOV, ARGUMENTS, 0, SLJIT_GENERAL_REG1, 0);
-OP1(SLJIT_MOV, TMP1, 0, SLJIT_GENERAL_REG1, 0);
+OP1(SLJIT_MOV, ARGUMENTS, 0, SLJIT_SAVED_REG1, 0);
+OP1(SLJIT_MOV, TMP1, 0, SLJIT_SAVED_REG1, 0);
OP1(SLJIT_MOV, STR_PTR, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, str));
OP1(SLJIT_MOV, STR_END, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, end));
OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, stack));

Modified: code/trunk/sljit/sljitLir.c
===================================================================
--- code/trunk/sljit/sljitLir.c    2012-01-15 15:50:06 UTC (rev 879)
+++ code/trunk/sljit/sljitLir.c    2012-01-15 17:23:37 UTC (rev 880)
@@ -228,7 +228,7 @@
     compiler->abuf->used_size = 0;


     compiler->temporaries = -1;
-    compiler->generals = -1;
+    compiler->saveds = -1;


 #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)
     compiler->args = -1;
@@ -475,12 +475,12 @@
 #define FUNCTION_CHECK_IS_REG(r) \
     ((r) == SLJIT_UNUSED || (r) == SLJIT_LOCALS_REG || \
     ((r) >= SLJIT_TEMPORARY_REG1 && (r) <= SLJIT_TEMPORARY_REG3 && (r) <= SLJIT_TEMPORARY_REG1 - 1 + compiler->temporaries) || \
-    ((r) >= SLJIT_GENERAL_REG1 && (r) <= SLJIT_GENERAL_REG3 && (r) <= SLJIT_GENERAL_REG1 - 1 + compiler->generals)) \
+    ((r) >= SLJIT_SAVED_REG1 && (r) <= SLJIT_SAVED_REG3 && (r) <= SLJIT_SAVED_REG1 - 1 + compiler->saveds)) \


 #define FUNCTION_CHECK_SRC(p, i) \
-    SLJIT_ASSERT(compiler->temporaries != -1 && compiler->generals != -1); \
+    SLJIT_ASSERT(compiler->temporaries != -1 && compiler->saveds != -1); \
     if (((p) >= SLJIT_TEMPORARY_REG1 && (p) <= SLJIT_TEMPORARY_REG1 - 1 + compiler->temporaries) || \
-            ((p) >= SLJIT_GENERAL_REG1 && (p) <= SLJIT_GENERAL_REG1 - 1 + compiler->generals) || \
+            ((p) >= SLJIT_SAVED_REG1 && (p) <= SLJIT_SAVED_REG1 - 1 + compiler->saveds) || \
             (p) == SLJIT_LOCALS_REG) \
         SLJIT_ASSERT(i == 0); \
     else if ((p) == SLJIT_IMM) \
@@ -498,9 +498,9 @@
         SLJIT_ASSERT_STOP();


 #define FUNCTION_CHECK_DST(p, i) \
-    SLJIT_ASSERT(compiler->temporaries != -1 && compiler->generals != -1); \
+    SLJIT_ASSERT(compiler->temporaries != -1 && compiler->saveds != -1); \
     if (((p) >= SLJIT_TEMPORARY_REG1 && (p) <= SLJIT_TEMPORARY_REG1 - 1 + compiler->temporaries) || \
-            ((p) >= SLJIT_GENERAL_REG1 && (p) <= SLJIT_GENERAL_REG1 - 1 + compiler->generals) || \
+            ((p) >= SLJIT_SAVED_REG1 && (p) <= SLJIT_SAVED_REG1 - 1 + compiler->saveds) || \
             (p) == SLJIT_UNUSED) \
         SLJIT_ASSERT(i == 0); \
     else if ((p) & SLJIT_MEM) { \
@@ -551,9 +551,9 @@
 }


 static char* reg_names[] = {
-    (char*)"<noreg>", (char*)"tmp_r1", (char*)"tmp_r2", (char*)"tmp_r3",
-    (char*)"tmp_er1", (char*)"tmp_er2", (char*)"gen_r1", (char*)"gen_r2",
-    (char*)"gen_r3", (char*)"gen_er1", (char*)"gen_er2", (char*)"stack_r"
+    (char*)"<noreg>", (char*)"t1", (char*)"t2", (char*)"t3",
+    (char*)"te1", (char*)"te2", (char*)"s1", (char*)"s2",
+    (char*)"s3", (char*)"se1", (char*)"se2", (char*)"lcr"
 };


static char* freg_names[] = {
@@ -674,43 +674,43 @@
#endif
}

-static SLJIT_INLINE void check_sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+static SLJIT_INLINE void check_sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     /* If debug and verbose are disabled, all arguments are unused. */
     SLJIT_UNUSED_ARG(compiler);
     SLJIT_UNUSED_ARG(args);
     SLJIT_UNUSED_ARG(temporaries);
-    SLJIT_UNUSED_ARG(generals);
+    SLJIT_UNUSED_ARG(saveds);
     SLJIT_UNUSED_ARG(local_size);


     SLJIT_ASSERT(args >= 0 && args <= 3);
     SLJIT_ASSERT(temporaries >= 0 && temporaries <= SLJIT_NO_TMP_REGISTERS);
-    SLJIT_ASSERT(generals >= 0 && generals <= SLJIT_NO_GEN_REGISTERS);
-    SLJIT_ASSERT(args <= generals);
+    SLJIT_ASSERT(saveds >= 0 && saveds <= SLJIT_NO_GEN_REGISTERS);
+    SLJIT_ASSERT(args <= saveds);
     SLJIT_ASSERT(local_size >= 0 && local_size <= SLJIT_MAX_LOCAL_SIZE);
 #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
     if (SLJIT_UNLIKELY(!!compiler->verbose))
-        fprintf(compiler->verbose, "  enter args=%d temporaries=%d generals=%d local_size=%d\n", args, temporaries, generals, local_size);
+        fprintf(compiler->verbose, "  enter args=%d temporaries=%d saveds=%d local_size=%d\n", args, temporaries, saveds, local_size);
 #endif
 }


-static SLJIT_INLINE void check_sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+static SLJIT_INLINE void check_sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     /* If debug and verbose are disabled, all arguments are unused. */
     SLJIT_UNUSED_ARG(compiler);
     SLJIT_UNUSED_ARG(args);
     SLJIT_UNUSED_ARG(temporaries);
-    SLJIT_UNUSED_ARG(generals);
+    SLJIT_UNUSED_ARG(saveds);
     SLJIT_UNUSED_ARG(local_size);


     SLJIT_ASSERT(args >= 0 && args <= 3);
     SLJIT_ASSERT(temporaries >= 0 && temporaries <= SLJIT_NO_TMP_REGISTERS);
-    SLJIT_ASSERT(generals >= 0 && generals <= SLJIT_NO_GEN_REGISTERS);
-    SLJIT_ASSERT(args <= generals);
+    SLJIT_ASSERT(saveds >= 0 && saveds <= SLJIT_NO_GEN_REGISTERS);
+    SLJIT_ASSERT(args <= saveds);
     SLJIT_ASSERT(local_size >= 0 && local_size <= SLJIT_MAX_LOCAL_SIZE);
 #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
     if (SLJIT_UNLIKELY(!!compiler->verbose))
-        fprintf(compiler->verbose, "  fake_enter args=%d temporaries=%d generals=%d local_size=%d\n", args, temporaries, generals, local_size);
+        fprintf(compiler->verbose, "  fake_enter args=%d temporaries=%d saveds=%d local_size=%d\n", args, temporaries, saveds, local_size);
 #endif
 }


@@ -743,7 +743,7 @@
#endif
}

-static SLJIT_INLINE void check_sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int generals, int local_size)
+static SLJIT_INLINE void check_sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int saveds, int local_size)
 {
     /* If debug and verbose are disabled, all arguments are unused. */
     SLJIT_UNUSED_ARG(compiler);
@@ -751,26 +751,26 @@
     SLJIT_UNUSED_ARG(dstw);
     SLJIT_UNUSED_ARG(args);
     SLJIT_UNUSED_ARG(temporaries);
-    SLJIT_UNUSED_ARG(generals);
+    SLJIT_UNUSED_ARG(saveds);
     SLJIT_UNUSED_ARG(local_size);


     SLJIT_ASSERT(args >= 0 && args <= 3);
     SLJIT_ASSERT(temporaries >= 0 && temporaries <= SLJIT_NO_TMP_REGISTERS);
-    SLJIT_ASSERT(generals >= 0 && generals <= SLJIT_NO_GEN_REGISTERS);
-    SLJIT_ASSERT(args <= generals);
+    SLJIT_ASSERT(saveds >= 0 && saveds <= SLJIT_NO_GEN_REGISTERS);
+    SLJIT_ASSERT(args <= saveds);
     SLJIT_ASSERT(local_size >= 0 && local_size <= SLJIT_MAX_LOCAL_SIZE);
 #if (defined SLJIT_DEBUG && SLJIT_DEBUG)
     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;
     FUNCTION_CHECK_DST(dst, dstw);
     compiler->temporaries = -1;
-    compiler->generals = -1;
+    compiler->saveds = -1;
 #endif
 #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE)
     if (SLJIT_UNLIKELY(!!compiler->verbose)) {
         fprintf(compiler->verbose, "  fast_enter ");
         sljit_verbose_param(dst, dstw);
-        fprintf(compiler->verbose, " args=%d temporaries=%d generals=%d local_size=%d\n", args, temporaries, generals, local_size);
+        fprintf(compiler->verbose, " args=%d temporaries=%d saveds=%d local_size=%d\n", args, temporaries, saveds, local_size);
     }
 #endif
 }
@@ -1318,23 +1318,23 @@
     SLJIT_ASSERT_STOP();
 }


-SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     SLJIT_UNUSED_ARG(compiler);
     SLJIT_UNUSED_ARG(args);
     SLJIT_UNUSED_ARG(temporaries);
-    SLJIT_UNUSED_ARG(generals);
+    SLJIT_UNUSED_ARG(saveds);
     SLJIT_UNUSED_ARG(local_size);
     SLJIT_ASSERT_STOP();
     return SLJIT_ERR_UNSUPPORTED;
 }


-SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     SLJIT_UNUSED_ARG(compiler);
     SLJIT_UNUSED_ARG(args);
     SLJIT_UNUSED_ARG(temporaries);
-    SLJIT_UNUSED_ARG(generals);
+    SLJIT_UNUSED_ARG(saveds);
     SLJIT_UNUSED_ARG(local_size);
     SLJIT_ASSERT_STOP();
 }
@@ -1349,14 +1349,14 @@
     return SLJIT_ERR_UNSUPPORTED;
 }


-SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int saveds, int local_size)
 {
     SLJIT_UNUSED_ARG(compiler);
     SLJIT_UNUSED_ARG(dst);
     SLJIT_UNUSED_ARG(dstw);
     SLJIT_UNUSED_ARG(args);
     SLJIT_UNUSED_ARG(temporaries);
-    SLJIT_UNUSED_ARG(generals);
+    SLJIT_UNUSED_ARG(saveds);
     SLJIT_UNUSED_ARG(local_size);
     SLJIT_ASSERT_STOP();
     return SLJIT_ERR_UNSUPPORTED;


Modified: code/trunk/sljit/sljitLir.h
===================================================================
--- code/trunk/sljit/sljitLir.h    2012-01-15 15:50:06 UTC (rev 879)
+++ code/trunk/sljit/sljitLir.h    2012-01-15 17:23:37 UTC (rev 880)
@@ -44,10 +44,10 @@
       - The compiler is thread-safe
     Disadvantages:
       - Limited number of registers (only 6+4 integer registers, max 3+2
-        temporary and max 3+2 general, and 4 floating point registers)
+        temporary, max 3+2 saved and 4 floating point registers)
     In practice:
       - This approach is very effective for interpreters
-        - One of the general registers typically points to a stack interface
+        - One of the saved registers typically points to a stack interface
         - It can jump to any exception handler anytime (even for another
           function. It is safe for SLJIT.)
         - Fast paths can be modified during runtime reflecting the changes
@@ -104,14 +104,14 @@
 #define SLJIT_TEMPORARY_EREG1    4
 #define SLJIT_TEMPORARY_EREG2    5


-/* General (saved) registers preserve their values across function calls. */
-#define SLJIT_GENERAL_REG1    6
-#define SLJIT_GENERAL_REG2    7
-#define SLJIT_GENERAL_REG3    8
+/* Saved registers whose preserve their values across function calls. */
+#define SLJIT_SAVED_REG1    6
+#define SLJIT_SAVED_REG2    7
+#define SLJIT_SAVED_REG3    8
 /* Note: Extra Registers cannot be used for memory addressing. */
 /* Note: on x86-32, these registers are emulated (using stack loads & stores). */
-#define SLJIT_GENERAL_EREG1    9
-#define SLJIT_GENERAL_EREG2    10
+#define SLJIT_SAVED_EREG1    9
+#define SLJIT_SAVED_EREG2    10


/* Read-only register (cannot be the destination of an operation). */
/* Note: SLJIT_MEM2( ... , SLJIT_LOCALS_REG) is not supported (x86 limitation). */
@@ -196,8 +196,8 @@

     /* Used local registers. */
     int temporaries;
-    /* Used general registers. */
-    int generals;
+    /* Used saved registers. */
+    int saveds;
     /* Local stack size. */
     int local_size;
     /* Code size. */
@@ -208,7 +208,7 @@
 #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)
     int args;
     int temporaries_start;
-    int generals_start;
+    int saveds_start;
 #endif


 #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
@@ -228,7 +228,7 @@
     sljit_ub *cpool_unique;
     sljit_uw cpool_diff;
     sljit_uw cpool_fill;
-    /* General fields. */
+    /* Other members. */
     /* Contains pointer, "ldr pc, [...]" pairs. */
     sljit_uw patches;
 #endif
@@ -317,13 +317,13 @@
    Binary Interface) of the platform, which specify the purpose of machine
    registers and stack handling among other things. The sljit_emit_enter
    function emits the necessary instructions for setting up a new context
-   for the executable code and moves function arguments to the general
+   for the executable code and moves function arguments to the saved
    registers. The number of arguments are specified in the "args"
-   parameter and the first argument goes to SLJIT_GENERAL_REG1, the second
-   goes to SLJIT_GENERAL_REG2 and so on. The number of temporary and
-   general registers are passed in "temporaries" and "generals" arguments
-   respectively. Since the general registers contains the arguments,
-   "args" must be less or equal than "generals". The sljit_emit_enter
+   parameter and the first argument goes to SLJIT_SAVED_REG1, the second
+   goes to SLJIT_SAVED_REG2 and so on. The number of temporary and
+   saved registers are passed in "temporaries" and "saveds" arguments
+   respectively. Since the saved registers contains the arguments,
+   "args" must be less or equal than "saveds". The sljit_emit_enter
    is also capable of allocating a stack space for local variables. The
    "local_size" argument contains the size in bytes of this local area
    and its staring address is stored in SLJIT_LOCALS_REG. However
@@ -338,7 +338,7 @@
 #define SLJIT_MAX_LOCAL_SIZE    65536


 SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler,
-    int args, int temporaries, int generals, int local_size);
+    int args, int temporaries, int saveds, int local_size);


 /* The machine code has a context (which contains the local stack space size,
    number of used registers, etc.) which initialized by sljit_emit_enter. Several
@@ -353,7 +353,7 @@
 /* Note: multiple calls of this function overwrites the previous call. */


 SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler,
-    int args, int temporaries, int generals, int local_size);
+    int args, int temporaries, int saveds, int local_size);


 /* Return from machine code.  The op argument can be SLJIT_UNUSED which means the
    function does not return with anything or any opcode between SLJIT_MOV and
@@ -369,7 +369,7 @@
    use this as a return value later. */


 /* Note: only for sljit specific, non ABI compilant calls. Fast, since only a few machine instructions
-   are needed. Excellent for small uility functions, where saving general registers and setting up
+   are needed. Excellent for small uility functions, where saving registers and setting up
    a new stack frame would cost too much performance. However, it is still possible to return
    to the address of the caller (or anywhere else). */


@@ -378,7 +378,7 @@
 /* Note: although sljit_emit_fast_return could be replaced by an ijump, it is not suggested,
    since many architectures do clever branch prediction on call / return instruction pairs. */


-SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int generals, int local_size);
+SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int saveds, int local_size);
SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_return(struct sljit_compiler *compiler, int src, sljit_w srcw);

/*
@@ -586,7 +586,7 @@

 /* The following function is a helper function for sljit_emit_op_custom.
    It returns with the real machine register index of any SLJIT_TEMPORARY
-   SLJIT_GENERAL or SLJIT_LOCALS register.
+   SLJIT_SAVED or SLJIT_LOCALS register.
    Note: it returns with -1 for virtual registers (all EREGs on x86-32).
    Note: register returned by SLJIT_LOCALS_REG is not necessary the real
          stack pointer register of the target architecture. */


Modified: code/trunk/sljit/sljitNativeARM_Thumb2.c
===================================================================
--- code/trunk/sljit/sljitNativeARM_Thumb2.c    2012-01-15 15:50:06 UTC (rev 879)
+++ code/trunk/sljit/sljitNativeARM_Thumb2.c    2012-01-15 17:23:37 UTC (rev 880)
@@ -1101,36 +1101,36 @@
     return getput_arg(compiler, flags, reg, arg, argw, 0, 0);
 }


-SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     int size;
     sljit_ins push;


     CHECK_ERROR();
-    check_sljit_emit_enter(compiler, args, temporaries, generals, local_size);
+    check_sljit_emit_enter(compiler, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;


     push = (1 << 4);
-    if (generals >= 5)
+    if (saveds >= 5)
         push |= 1 << 11;
-    if (generals >= 4)
+    if (saveds >= 4)
         push |= 1 << 10;
-    if (generals >= 3)
+    if (saveds >= 3)
         push |= 1 << 8;
-    if (generals >= 2)
+    if (saveds >= 2)
         push |= 1 << 7;
-    if (generals >= 1)
+    if (saveds >= 1)
         push |= 1 << 6;
         if (temporaries >= 5)
         push |= 1 << 5;
-    FAIL_IF(generals >= 3
+    FAIL_IF(saveds >= 3
         ? push_inst32(compiler, PUSH_W | (1 << 14) | push)
         : push_inst16(compiler, PUSH | push));


     /* Stack must be aligned to 8 bytes: */
-    size = (3 + generals) * sizeof(sljit_uw);
+    size = (3 + saveds) * sizeof(sljit_uw);
     local_size += size;
     local_size = (local_size + 7) & ~7;
     local_size -= size;
@@ -1143,26 +1143,26 @@
     }


     if (args >= 1)
-        FAIL_IF(push_inst16(compiler, MOV | SET_REGS44(SLJIT_GENERAL_REG1, SLJIT_TEMPORARY_REG1)));
+        FAIL_IF(push_inst16(compiler, MOV | SET_REGS44(SLJIT_SAVED_REG1, SLJIT_TEMPORARY_REG1)));
     if (args >= 2)
-        FAIL_IF(push_inst16(compiler, MOV | SET_REGS44(SLJIT_GENERAL_REG2, SLJIT_TEMPORARY_REG2)));
+        FAIL_IF(push_inst16(compiler, MOV | SET_REGS44(SLJIT_SAVED_REG2, SLJIT_TEMPORARY_REG2)));
     if (args >= 3)
-        FAIL_IF(push_inst16(compiler, MOV | SET_REGS44(SLJIT_GENERAL_REG3, SLJIT_TEMPORARY_REG3)));
+        FAIL_IF(push_inst16(compiler, MOV | SET_REGS44(SLJIT_SAVED_REG3, SLJIT_TEMPORARY_REG3)));


     return SLJIT_SUCCESS;
 }


-SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     int size;


     CHECK_ERROR_VOID();
-    check_sljit_set_context(compiler, args, temporaries, generals, local_size);
+    check_sljit_set_context(compiler, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;


-    size = (3 + generals) * sizeof(sljit_uw);
+    size = (3 + saveds) * sizeof(sljit_uw);
     local_size += size;
     local_size = (local_size + 7) & ~7;
     local_size -= size;
@@ -1186,19 +1186,19 @@
     }


     pop = (1 << 4);
-    if (compiler->generals >= 5)
+    if (compiler->saveds >= 5)
         pop |= 1 << 11;
-    if (compiler->generals >= 4)
+    if (compiler->saveds >= 4)
         pop |= 1 << 10;
-    if (compiler->generals >= 3)
+    if (compiler->saveds >= 3)
         pop |= 1 << 8;
-    if (compiler->generals >= 2)
+    if (compiler->saveds >= 2)
         pop |= 1 << 7;
-    if (compiler->generals >= 1)
+    if (compiler->saveds >= 1)
         pop |= 1 << 6;
         if (compiler->temporaries >= 5)
         pop |= 1 << 5;
-    return compiler->generals >= 3
+    return compiler->saveds >= 3
         ? push_inst32(compiler, POP_W | (1 << 15) | pop)
         : push_inst16(compiler, POP | pop);
 }
@@ -1645,17 +1645,17 @@
 /*  Other instructions                                                   */
 /* --------------------------------------------------------------------- */


-SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int saveds, int local_size)
 {
     int size;


     CHECK_ERROR();
-    check_sljit_emit_fast_enter(compiler, dst, dstw, args, temporaries, generals, local_size);
+    check_sljit_emit_fast_enter(compiler, dst, dstw, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;


-    size = (3 + generals) * sizeof(sljit_uw);
+    size = (3 + saveds) * sizeof(sljit_uw);
     local_size += size;
     local_size = (local_size + 7) & ~7;
     local_size -= size;


Modified: code/trunk/sljit/sljitNativeARM_v5.c
===================================================================
--- code/trunk/sljit/sljitNativeARM_v5.c    2012-01-15 15:50:06 UTC (rev 879)
+++ code/trunk/sljit/sljitNativeARM_v5.c    2012-01-15 17:23:37 UTC (rev 880)
@@ -820,38 +820,38 @@
     int src1, sljit_w src1w,
     int src2, sljit_w src2w);


-SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     int size;
     sljit_uw push;


     CHECK_ERROR();
-    check_sljit_emit_enter(compiler, args, temporaries, generals, local_size);
+    check_sljit_emit_enter(compiler, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;


-    /* Push general registers, temporary registers
+    /* Push saved registers, temporary registers
        stmdb sp!, {..., lr} */
     push = PUSH | (1 << 14);
     if (temporaries >= 5)
         push |= 1 << 11;
     if (temporaries >= 4)
         push |= 1 << 10;
-    if (generals >= 5)
+    if (saveds >= 5)
         push |= 1 << 8;
-    if (generals >= 4)
+    if (saveds >= 4)
         push |= 1 << 7;
-    if (generals >= 3)
+    if (saveds >= 3)
         push |= 1 << 6;
-    if (generals >= 2)
+    if (saveds >= 2)
         push |= 1 << 5;
-    if (generals >= 1)
+    if (saveds >= 1)
         push |= 1 << 4;
     EMIT_INSTRUCTION(push);


     /* Stack must be aligned to 8 bytes: */
-    size = (1 + generals) * sizeof(sljit_uw);
+    size = (1 + saveds) * sizeof(sljit_uw);
     if (temporaries >= 4)
         size += (temporaries - 3) * sizeof(sljit_uw);
     local_size += size;
@@ -862,26 +862,26 @@
         FAIL_IF(emit_op(compiler, SLJIT_SUB, ALLOW_IMM, SLJIT_LOCALS_REG, 0, SLJIT_LOCALS_REG, 0, SLJIT_IMM, local_size));


     if (args >= 1)
-        EMIT_INSTRUCTION(EMIT_DATA_PROCESS_INS(MOV_DP, 0, SLJIT_GENERAL_REG1, SLJIT_UNUSED, RM(SLJIT_TEMPORARY_REG1)));
+        EMIT_INSTRUCTION(EMIT_DATA_PROCESS_INS(MOV_DP, 0, SLJIT_SAVED_REG1, SLJIT_UNUSED, RM(SLJIT_TEMPORARY_REG1)));
     if (args >= 2)
-        EMIT_INSTRUCTION(EMIT_DATA_PROCESS_INS(MOV_DP, 0, SLJIT_GENERAL_REG2, SLJIT_UNUSED, RM(SLJIT_TEMPORARY_REG2)));
+        EMIT_INSTRUCTION(EMIT_DATA_PROCESS_INS(MOV_DP, 0, SLJIT_SAVED_REG2, SLJIT_UNUSED, RM(SLJIT_TEMPORARY_REG2)));
     if (args >= 3)
-        EMIT_INSTRUCTION(EMIT_DATA_PROCESS_INS(MOV_DP, 0, SLJIT_GENERAL_REG3, SLJIT_UNUSED, RM(SLJIT_TEMPORARY_REG3)));
+        EMIT_INSTRUCTION(EMIT_DATA_PROCESS_INS(MOV_DP, 0, SLJIT_SAVED_REG3, SLJIT_UNUSED, RM(SLJIT_TEMPORARY_REG3)));


     return SLJIT_SUCCESS;
 }


-SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     int size;


     CHECK_ERROR_VOID();
-    check_sljit_set_context(compiler, args, temporaries, generals, local_size);
+    check_sljit_set_context(compiler, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;


-    size = (1 + generals) * sizeof(sljit_uw);
+    size = (1 + saveds) * sizeof(sljit_uw);
     if (temporaries >= 4)
         size += (temporaries - 3) * sizeof(sljit_uw);
     local_size += size;
@@ -903,21 +903,21 @@
         FAIL_IF(emit_op(compiler, SLJIT_ADD, ALLOW_IMM, SLJIT_LOCALS_REG, 0, SLJIT_LOCALS_REG, 0, SLJIT_IMM, compiler->local_size));


     pop = POP | (1 << 15);
-    /* Push general registers, temporary registers
+    /* Push saved registers, temporary registers
        ldmia sp!, {..., pc} */
     if (compiler->temporaries >= 5)
         pop |= 1 << 11;
     if (compiler->temporaries >= 4)
         pop |= 1 << 10;
-    if (compiler->generals >= 5)
+    if (compiler->saveds >= 5)
         pop |= 1 << 8;
-    if (compiler->generals >= 4)
+    if (compiler->saveds >= 4)
         pop |= 1 << 7;
-    if (compiler->generals >= 3)
+    if (compiler->saveds >= 3)
         pop |= 1 << 6;
-    if (compiler->generals >= 2)
+    if (compiler->saveds >= 2)
         pop |= 1 << 5;
-    if (compiler->generals >= 1)
+    if (compiler->saveds >= 1)
         pop |= 1 << 4;


     return push_inst(compiler, pop);
@@ -2141,17 +2141,17 @@
 /*  Other instructions                                                   */
 /* --------------------------------------------------------------------- */


-SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int saveds, int local_size)
 {
     int size;


     CHECK_ERROR();
-    check_sljit_emit_fast_enter(compiler, dst, dstw, args, temporaries, generals, local_size);
+    check_sljit_emit_fast_enter(compiler, dst, dstw, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;


-    size = (1 + generals) * sizeof(sljit_uw);
+    size = (1 + saveds) * sizeof(sljit_uw);
     if (temporaries >= 4)
         size += (temporaries - 3) * sizeof(sljit_uw);
     local_size += size;


Modified: code/trunk/sljit/sljitNativeMIPS_common.c
===================================================================
--- code/trunk/sljit/sljitNativeMIPS_common.c    2012-01-15 15:50:06 UTC (rev 879)
+++ code/trunk/sljit/sljitNativeMIPS_common.c    2012-01-15 17:23:37 UTC (rev 880)
@@ -459,18 +459,18 @@
     int src1, sljit_w src1w,
     int src2, sljit_w src2w);


-SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     sljit_ins base;


     CHECK_ERROR();
-    check_sljit_emit_enter(compiler, args, temporaries, generals, local_size);
+    check_sljit_emit_enter(compiler, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;


     compiler->has_locals = local_size > 0;
-    local_size += (generals + 2 + 4) * sizeof(sljit_w);
+    local_size += (saveds + 2 + 4) * sizeof(sljit_w);
     local_size = (local_size + 15) & ~0xf;
     compiler->local_size = local_size;


@@ -490,40 +490,40 @@
     FAIL_IF(push_inst(compiler, STACK_STORE | base | TA(RETURN_ADDR_REG) | IMM(local_size - 1 * (int)sizeof(sljit_w)), MOVABLE_INS));
     if (compiler->has_locals)
         FAIL_IF(push_inst(compiler, STACK_STORE | base | T(SLJIT_LOCALS_REG) | IMM(local_size - 2 * (int)sizeof(sljit_w)), MOVABLE_INS));
-    if (generals >= 1)
-        FAIL_IF(push_inst(compiler, STACK_STORE | base | T(SLJIT_GENERAL_REG1) | IMM(local_size - 3 * (int)sizeof(sljit_w)), MOVABLE_INS));
-    if (generals >= 2)
-        FAIL_IF(push_inst(compiler, STACK_STORE | base | T(SLJIT_GENERAL_REG2) | IMM(local_size - 4 * (int)sizeof(sljit_w)), MOVABLE_INS));
-    if (generals >= 3)
-        FAIL_IF(push_inst(compiler, STACK_STORE | base | T(SLJIT_GENERAL_REG3) | IMM(local_size - 5 * (int)sizeof(sljit_w)), MOVABLE_INS));
-    if (generals >= 4)
-        FAIL_IF(push_inst(compiler, STACK_STORE | base | T(SLJIT_GENERAL_EREG1) | IMM(local_size - 6 * (int)sizeof(sljit_w)), MOVABLE_INS));
-    if (generals >= 5)
-        FAIL_IF(push_inst(compiler, STACK_STORE | base | T(SLJIT_GENERAL_EREG2) | IMM(local_size - 7 * (int)sizeof(sljit_w)), MOVABLE_INS));
+    if (saveds >= 1)
+        FAIL_IF(push_inst(compiler, STACK_STORE | base | T(SLJIT_SAVED_REG1) | IMM(local_size - 3 * (int)sizeof(sljit_w)), MOVABLE_INS));
+    if (saveds >= 2)
+        FAIL_IF(push_inst(compiler, STACK_STORE | base | T(SLJIT_SAVED_REG2) | IMM(local_size - 4 * (int)sizeof(sljit_w)), MOVABLE_INS));
+    if (saveds >= 3)
+        FAIL_IF(push_inst(compiler, STACK_STORE | base | T(SLJIT_SAVED_REG3) | IMM(local_size - 5 * (int)sizeof(sljit_w)), MOVABLE_INS));
+    if (saveds >= 4)
+        FAIL_IF(push_inst(compiler, STACK_STORE | base | T(SLJIT_SAVED_EREG1) | IMM(local_size - 6 * (int)sizeof(sljit_w)), MOVABLE_INS));
+    if (saveds >= 5)
+        FAIL_IF(push_inst(compiler, STACK_STORE | base | T(SLJIT_SAVED_EREG2) | IMM(local_size - 7 * (int)sizeof(sljit_w)), MOVABLE_INS));


     if (compiler->has_locals)
         FAIL_IF(push_inst(compiler, ADDIU_W | S(REAL_STACK_PTR) | T(SLJIT_LOCALS_REG) | IMM(4 * sizeof(sljit_w)), DR(SLJIT_LOCALS_REG)));


     if (args >= 1)
-        FAIL_IF(push_inst(compiler, ADDU_W | SA(4) | TA(0) | D(SLJIT_GENERAL_REG1), DR(SLJIT_GENERAL_REG1)));
+        FAIL_IF(push_inst(compiler, ADDU_W | SA(4) | TA(0) | D(SLJIT_SAVED_REG1), DR(SLJIT_SAVED_REG1)));
     if (args >= 2)
-        FAIL_IF(push_inst(compiler, ADDU_W | SA(5) | TA(0) | D(SLJIT_GENERAL_REG2), DR(SLJIT_GENERAL_REG2)));
+        FAIL_IF(push_inst(compiler, ADDU_W | SA(5) | TA(0) | D(SLJIT_SAVED_REG2), DR(SLJIT_SAVED_REG2)));
     if (args >= 3)
-        FAIL_IF(push_inst(compiler, ADDU_W | SA(6) | TA(0) | D(SLJIT_GENERAL_REG3), DR(SLJIT_GENERAL_REG3)));
+        FAIL_IF(push_inst(compiler, ADDU_W | SA(6) | TA(0) | D(SLJIT_SAVED_REG3), DR(SLJIT_SAVED_REG3)));


     return SLJIT_SUCCESS;
 }


-SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     CHECK_ERROR_VOID();
-    check_sljit_set_context(compiler, args, temporaries, generals, local_size);
+    check_sljit_set_context(compiler, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;


     compiler->has_locals = local_size > 0;
-    local_size += (generals + 2 + 4) * sizeof(sljit_w);
+    local_size += (saveds + 2 + 4) * sizeof(sljit_w);
     compiler->local_size = (local_size + 15) & ~0xf;
 }


@@ -548,16 +548,16 @@
     }


     FAIL_IF(push_inst(compiler, STACK_LOAD | base | TA(RETURN_ADDR_REG) | IMM(local_size - 1 * (int)sizeof(sljit_w)), RETURN_ADDR_REG));
-    if (compiler->generals >= 5)
-        FAIL_IF(push_inst(compiler, STACK_LOAD | base | T(SLJIT_GENERAL_EREG2) | IMM(local_size - 7 * (int)sizeof(sljit_w)), DR(SLJIT_GENERAL_EREG2)));
-    if (compiler->generals >= 4)
-        FAIL_IF(push_inst(compiler, STACK_LOAD | base | T(SLJIT_GENERAL_EREG1) | IMM(local_size - 6 * (int)sizeof(sljit_w)), DR(SLJIT_GENERAL_EREG1)));
-    if (compiler->generals >= 3)
-        FAIL_IF(push_inst(compiler, STACK_LOAD | base | T(SLJIT_GENERAL_REG3) | IMM(local_size - 5 * (int)sizeof(sljit_w)), DR(SLJIT_GENERAL_REG3)));
-    if (compiler->generals >= 2)
-        FAIL_IF(push_inst(compiler, STACK_LOAD | base | T(SLJIT_GENERAL_REG2) | IMM(local_size - 4 * (int)sizeof(sljit_w)), DR(SLJIT_GENERAL_REG2)));
-    if (compiler->generals >= 1)
-        FAIL_IF(push_inst(compiler, STACK_LOAD | base | T(SLJIT_GENERAL_REG1) | IMM(local_size - 3 * (int)sizeof(sljit_w)), DR(SLJIT_GENERAL_REG1)));
+    if (compiler->saveds >= 5)
+        FAIL_IF(push_inst(compiler, STACK_LOAD | base | T(SLJIT_SAVED_EREG2) | IMM(local_size - 7 * (int)sizeof(sljit_w)), DR(SLJIT_SAVED_EREG2)));
+    if (compiler->saveds >= 4)
+        FAIL_IF(push_inst(compiler, STACK_LOAD | base | T(SLJIT_SAVED_EREG1) | IMM(local_size - 6 * (int)sizeof(sljit_w)), DR(SLJIT_SAVED_EREG1)));
+    if (compiler->saveds >= 3)
+        FAIL_IF(push_inst(compiler, STACK_LOAD | base | T(SLJIT_SAVED_REG3) | IMM(local_size - 5 * (int)sizeof(sljit_w)), DR(SLJIT_SAVED_REG3)));
+    if (compiler->saveds >= 2)
+        FAIL_IF(push_inst(compiler, STACK_LOAD | base | T(SLJIT_SAVED_REG2) | IMM(local_size - 4 * (int)sizeof(sljit_w)), DR(SLJIT_SAVED_REG2)));
+    if (compiler->saveds >= 1)
+        FAIL_IF(push_inst(compiler, STACK_LOAD | base | T(SLJIT_SAVED_REG1) | IMM(local_size - 3 * (int)sizeof(sljit_w)), DR(SLJIT_SAVED_REG1)));
     if (compiler->has_locals)
         FAIL_IF(push_inst(compiler, STACK_LOAD | base | T(SLJIT_LOCALS_REG) | IMM(local_size - 2 * (int)sizeof(sljit_w)), DR(SLJIT_LOCALS_REG)));


@@ -1264,16 +1264,16 @@
 /*  Other instructions                                                   */
 /* --------------------------------------------------------------------- */


-SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int saveds, int local_size)
 {
     CHECK_ERROR();
-    check_sljit_emit_fast_enter(compiler, dst, dstw, args, temporaries, generals, local_size);
+    check_sljit_emit_fast_enter(compiler, dst, dstw, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;


     compiler->has_locals = local_size > 0;
-    local_size += (generals + 2 + 4) * sizeof(sljit_w);
+    local_size += (saveds + 2 + 4) * sizeof(sljit_w);
     compiler->local_size = (local_size + 15) & ~0xf;


     if (dst >= SLJIT_TEMPORARY_REG1 && dst <= SLJIT_NO_REGISTERS)


Modified: code/trunk/sljit/sljitNativePPC_common.c
===================================================================
--- code/trunk/sljit/sljitNativePPC_common.c    2012-01-15 15:50:06 UTC (rev 879)
+++ code/trunk/sljit/sljitNativePPC_common.c    2012-01-15 17:23:37 UTC (rev 880)
@@ -437,43 +437,43 @@
     int src1, sljit_w src1w,
     int src2, sljit_w src2w);


-SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     CHECK_ERROR();
-    check_sljit_emit_enter(compiler, args, temporaries, generals, local_size);
+    check_sljit_emit_enter(compiler, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;
     compiler->has_locals = local_size > 0;


     FAIL_IF(push_inst(compiler, MFLR | D(0)));
     if (compiler->has_locals)
         FAIL_IF(push_inst(compiler, STACK_STORE | S(SLJIT_LOCALS_REG) | A(REAL_STACK_PTR) | IMM(-(int)(sizeof(sljit_w))) ));
     FAIL_IF(push_inst(compiler, STACK_STORE | S(ZERO_REG) | A(REAL_STACK_PTR) | IMM(-2 * (int)(sizeof(sljit_w))) ));
-    if (generals >= 1)
-        FAIL_IF(push_inst(compiler, STACK_STORE | S(SLJIT_GENERAL_REG1) | A(REAL_STACK_PTR) | IMM(-3 * (int)(sizeof(sljit_w))) ));
-    if (generals >= 2)
-        FAIL_IF(push_inst(compiler, STACK_STORE | S(SLJIT_GENERAL_REG2) | A(REAL_STACK_PTR) | IMM(-4 * (int)(sizeof(sljit_w))) ));
-    if (generals >= 3)
-        FAIL_IF(push_inst(compiler, STACK_STORE | S(SLJIT_GENERAL_REG3) | A(REAL_STACK_PTR) | IMM(-5 * (int)(sizeof(sljit_w))) ));
-    if (generals >= 4)
-        FAIL_IF(push_inst(compiler, STACK_STORE | S(SLJIT_GENERAL_EREG1) | A(REAL_STACK_PTR) | IMM(-6 * (int)(sizeof(sljit_w))) ));
-    if (generals >= 5)
-        FAIL_IF(push_inst(compiler, STACK_STORE | S(SLJIT_GENERAL_EREG2) | A(REAL_STACK_PTR) | IMM(-7 * (int)(sizeof(sljit_w))) ));
+    if (saveds >= 1)
+        FAIL_IF(push_inst(compiler, STACK_STORE | S(SLJIT_SAVED_REG1) | A(REAL_STACK_PTR) | IMM(-3 * (int)(sizeof(sljit_w))) ));
+    if (saveds >= 2)
+        FAIL_IF(push_inst(compiler, STACK_STORE | S(SLJIT_SAVED_REG2) | A(REAL_STACK_PTR) | IMM(-4 * (int)(sizeof(sljit_w))) ));
+    if (saveds >= 3)
+        FAIL_IF(push_inst(compiler, STACK_STORE | S(SLJIT_SAVED_REG3) | A(REAL_STACK_PTR) | IMM(-5 * (int)(sizeof(sljit_w))) ));
+    if (saveds >= 4)
+        FAIL_IF(push_inst(compiler, STACK_STORE | S(SLJIT_SAVED_EREG1) | A(REAL_STACK_PTR) | IMM(-6 * (int)(sizeof(sljit_w))) ));
+    if (saveds >= 5)
+        FAIL_IF(push_inst(compiler, STACK_STORE | S(SLJIT_SAVED_EREG2) | A(REAL_STACK_PTR) | IMM(-7 * (int)(sizeof(sljit_w))) ));
     FAIL_IF(push_inst(compiler, STACK_STORE | S(0) | A(REAL_STACK_PTR) | IMM(sizeof(sljit_w)) ));


     FAIL_IF(push_inst(compiler, ADDI | D(ZERO_REG) | A(0) | 0));
     if (args >= 1)
-        FAIL_IF(push_inst(compiler, OR | S(SLJIT_TEMPORARY_REG1) | A(SLJIT_GENERAL_REG1) | B(SLJIT_TEMPORARY_REG1)));
+        FAIL_IF(push_inst(compiler, OR | S(SLJIT_TEMPORARY_REG1) | A(SLJIT_SAVED_REG1) | B(SLJIT_TEMPORARY_REG1)));
     if (args >= 2)
-        FAIL_IF(push_inst(compiler, OR | S(SLJIT_TEMPORARY_REG2) | A(SLJIT_GENERAL_REG2) | B(SLJIT_TEMPORARY_REG2)));
+        FAIL_IF(push_inst(compiler, OR | S(SLJIT_TEMPORARY_REG2) | A(SLJIT_SAVED_REG2) | B(SLJIT_TEMPORARY_REG2)));
     if (args >= 3)
-        FAIL_IF(push_inst(compiler, OR | S(SLJIT_TEMPORARY_REG3) | A(SLJIT_GENERAL_REG3) | B(SLJIT_TEMPORARY_REG3)));
+        FAIL_IF(push_inst(compiler, OR | S(SLJIT_TEMPORARY_REG3) | A(SLJIT_SAVED_REG3) | B(SLJIT_TEMPORARY_REG3)));


 #if (defined SLJIT_CONFIG_PPC_32 && SLJIT_CONFIG_PPC_32)
-    compiler->local_size = (2 + generals + 2) * sizeof(sljit_w) + local_size;
+    compiler->local_size = (2 + saveds + 2) * sizeof(sljit_w) + local_size;
 #else
-    compiler->local_size = (2 + generals + 7 + 8) * sizeof(sljit_w) + local_size;
+    compiler->local_size = (2 + saveds + 7 + 8) * sizeof(sljit_w) + local_size;
 #endif
     compiler->local_size = (compiler->local_size + 15) & ~0xf;


@@ -500,19 +500,19 @@
     return SLJIT_SUCCESS;
 }


-SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     CHECK_ERROR_VOID();
-    check_sljit_set_context(compiler, args, temporaries, generals, local_size);
+    check_sljit_set_context(compiler, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;


     compiler->has_locals = local_size > 0;
 #if (defined SLJIT_CONFIG_PPC_32 && SLJIT_CONFIG_PPC_32)
-    compiler->local_size = (2 + generals + 2) * sizeof(sljit_w) + local_size;
+    compiler->local_size = (2 + saveds + 2) * sizeof(sljit_w) + local_size;
 #else
-    compiler->local_size = (2 + generals + 7 + 8) * sizeof(sljit_w) + local_size;
+    compiler->local_size = (2 + saveds + 7 + 8) * sizeof(sljit_w) + local_size;
 #endif
     compiler->local_size = (compiler->local_size + 15) & ~0xf;
 }
@@ -532,16 +532,16 @@
     }


     FAIL_IF(push_inst(compiler, STACK_LOAD | D(0) | A(REAL_STACK_PTR) | IMM(sizeof(sljit_w))));
-    if (compiler->generals >= 5)
-        FAIL_IF(push_inst(compiler, STACK_LOAD | D(SLJIT_GENERAL_EREG2) | A(REAL_STACK_PTR) | IMM(-7 * (int)(sizeof(sljit_w))) ));
-    if (compiler->generals >= 4)
-        FAIL_IF(push_inst(compiler, STACK_LOAD | D(SLJIT_GENERAL_EREG1) | A(REAL_STACK_PTR) | IMM(-6 * (int)(sizeof(sljit_w))) ));
-    if (compiler->generals >= 3)
-        FAIL_IF(push_inst(compiler, STACK_LOAD | D(SLJIT_GENERAL_REG3) | A(REAL_STACK_PTR) | IMM(-5 * (int)(sizeof(sljit_w))) ));
-    if (compiler->generals >= 2)
-        FAIL_IF(push_inst(compiler, STACK_LOAD | D(SLJIT_GENERAL_REG2) | A(REAL_STACK_PTR) | IMM(-4 * (int)(sizeof(sljit_w))) ));
-    if (compiler->generals >= 1)
-        FAIL_IF(push_inst(compiler, STACK_LOAD | D(SLJIT_GENERAL_REG1) | A(REAL_STACK_PTR) | IMM(-3 * (int)(sizeof(sljit_w))) ));
+    if (compiler->saveds >= 5)
+        FAIL_IF(push_inst(compiler, STACK_LOAD | D(SLJIT_SAVED_EREG2) | A(REAL_STACK_PTR) | IMM(-7 * (int)(sizeof(sljit_w))) ));
+    if (compiler->saveds >= 4)
+        FAIL_IF(push_inst(compiler, STACK_LOAD | D(SLJIT_SAVED_EREG1) | A(REAL_STACK_PTR) | IMM(-6 * (int)(sizeof(sljit_w))) ));
+    if (compiler->saveds >= 3)
+        FAIL_IF(push_inst(compiler, STACK_LOAD | D(SLJIT_SAVED_REG3) | A(REAL_STACK_PTR) | IMM(-5 * (int)(sizeof(sljit_w))) ));
+    if (compiler->saveds >= 2)
+        FAIL_IF(push_inst(compiler, STACK_LOAD | D(SLJIT_SAVED_REG2) | A(REAL_STACK_PTR) | IMM(-4 * (int)(sizeof(sljit_w))) ));
+    if (compiler->saveds >= 1)
+        FAIL_IF(push_inst(compiler, STACK_LOAD | D(SLJIT_SAVED_REG1) | A(REAL_STACK_PTR) | IMM(-3 * (int)(sizeof(sljit_w))) ));
     FAIL_IF(push_inst(compiler, STACK_LOAD | D(ZERO_REG) | A(REAL_STACK_PTR) | IMM(-2 * (int)(sizeof(sljit_w))) ));
     if (compiler->has_locals)
         FAIL_IF(push_inst(compiler, STACK_LOAD | D(SLJIT_LOCALS_REG) | A(REAL_STACK_PTR) | IMM(-(int)(sizeof(sljit_w))) ));
@@ -1554,19 +1554,19 @@
 /*  Other instructions                                                   */
 /* --------------------------------------------------------------------- */


-SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int saveds, int local_size)
 {
     CHECK_ERROR();
-    check_sljit_emit_fast_enter(compiler, dst, dstw, args, temporaries, generals, local_size);
+    check_sljit_emit_fast_enter(compiler, dst, dstw, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;


     compiler->has_locals = local_size > 0;
 #if (defined SLJIT_CONFIG_PPC_32 && SLJIT_CONFIG_PPC_32)
-    compiler->local_size = (2 + generals + 2) * sizeof(sljit_w) + local_size;
+    compiler->local_size = (2 + saveds + 2) * sizeof(sljit_w) + local_size;
 #else
-    compiler->local_size = (2 + generals + 7 + 8) * sizeof(sljit_w) + local_size;
+    compiler->local_size = (2 + saveds + 7 + 8) * sizeof(sljit_w) + local_size;
 #endif
     compiler->local_size = (compiler->local_size + 15) & ~0xf;



Modified: code/trunk/sljit/sljitNativeX86_32.c
===================================================================
--- code/trunk/sljit/sljitNativeX86_32.c    2012-01-15 15:50:06 UTC (rev 879)
+++ code/trunk/sljit/sljitNativeX86_32.c    2012-01-15 17:23:37 UTC (rev 880)
@@ -63,23 +63,23 @@
     return code_ptr;
 }


-SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     int size;
     sljit_ub *buf;


     CHECK_ERROR();
-    check_sljit_emit_enter(compiler, args, temporaries, generals, local_size);
+    check_sljit_emit_enter(compiler, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;
     compiler->args = args;
     compiler->flags_saved = 0;


 #if (defined SLJIT_X86_32_FASTCALL && SLJIT_X86_32_FASTCALL)
-    size = 1 + (generals <= 3 ? generals : 3) + (args > 0 ? (args * 2) : 0) + (args > 2 ? 2 : 0);
+    size = 1 + (saveds <= 3 ? saveds : 3) + (args > 0 ? (args * 2) : 0) + (args > 2 ? 2 : 0);
 #else
-    size = 1 + (generals <= 3 ? generals : 3) + (args > 0 ? (2 + args * 3) : 0);
+    size = 1 + (saveds <= 3 ? saveds : 3) + (args > 0 ? (2 + args * 3) : 0);
 #endif
     buf = (sljit_ub*)ensure_buf(compiler, 1 + size);
     FAIL_IF(!buf);
@@ -92,42 +92,42 @@
         *buf++ = 0xc4 | (reg_map[TMP_REGISTER] << 3);
     }
 #endif
-    if (generals > 2)
-        PUSH_REG(reg_map[SLJIT_GENERAL_REG3]);
-    if (generals > 1)
-        PUSH_REG(reg_map[SLJIT_GENERAL_REG2]);
-    if (generals > 0)
-        PUSH_REG(reg_map[SLJIT_GENERAL_REG1]);
+    if (saveds > 2)
+        PUSH_REG(reg_map[SLJIT_SAVED_REG3]);
+    if (saveds > 1)
+        PUSH_REG(reg_map[SLJIT_SAVED_REG2]);
+    if (saveds > 0)
+        PUSH_REG(reg_map[SLJIT_SAVED_REG1]);


 #if (defined SLJIT_X86_32_FASTCALL && SLJIT_X86_32_FASTCALL)
     if (args > 0) {
         *buf++ = 0x8b;
-        *buf++ = 0xc0 | (reg_map[SLJIT_GENERAL_REG1] << 3) | reg_map[SLJIT_TEMPORARY_REG3];
+        *buf++ = 0xc0 | (reg_map[SLJIT_SAVED_REG1] << 3) | reg_map[SLJIT_TEMPORARY_REG3];
     }
     if (args > 1) {
         *buf++ = 0x8b;
-        *buf++ = 0xc0 | (reg_map[SLJIT_GENERAL_REG2] << 3) | reg_map[SLJIT_TEMPORARY_REG2];
+        *buf++ = 0xc0 | (reg_map[SLJIT_SAVED_REG2] << 3) | reg_map[SLJIT_TEMPORARY_REG2];
     }
     if (args > 2) {
         *buf++ = 0x8b;
-        *buf++ = 0x44 | (reg_map[SLJIT_GENERAL_REG3] << 3);
+        *buf++ = 0x44 | (reg_map[SLJIT_SAVED_REG3] << 3);
         *buf++ = 0x24;
-        *buf++ = sizeof(sljit_w) * (3 + 2); /* generals >= 3 as well. */
+        *buf++ = sizeof(sljit_w) * (3 + 2); /* saveds >= 3 as well. */
     }
 #else
     if (args > 0) {
         *buf++ = 0x8b;
-        *buf++ = 0x40 | (reg_map[SLJIT_GENERAL_REG1] << 3) | reg_map[TMP_REGISTER];
+        *buf++ = 0x40 | (reg_map[SLJIT_SAVED_REG1] << 3) | reg_map[TMP_REGISTER];
         *buf++ = sizeof(sljit_w) * 2;
     }
     if (args > 1) {
         *buf++ = 0x8b;
-        *buf++ = 0x40 | (reg_map[SLJIT_GENERAL_REG2] << 3) | reg_map[TMP_REGISTER];
+        *buf++ = 0x40 | (reg_map[SLJIT_SAVED_REG2] << 3) | reg_map[TMP_REGISTER];
         *buf++ = sizeof(sljit_w) * 3;
     }
     if (args > 2) {
         *buf++ = 0x8b;
-        *buf++ = 0x40 | (reg_map[SLJIT_GENERAL_REG3] << 3) | reg_map[TMP_REGISTER];
+        *buf++ = 0x40 | (reg_map[SLJIT_SAVED_REG3] << 3) | reg_map[TMP_REGISTER];
         *buf++ = sizeof(sljit_w) * 4;
     }
 #endif
@@ -136,9 +136,9 @@
     compiler->temporaries_start = local_size;
     if (temporaries > 3)
         local_size += (temporaries - 3) * sizeof(sljit_uw);
-    compiler->generals_start = local_size;
-    if (generals > 3)
-        local_size += (generals - 3) * sizeof(sljit_uw);
+    compiler->saveds_start = local_size;
+    if (saveds > 3)
+        local_size += (saveds - 3) * sizeof(sljit_uw);


 #ifdef _WIN32
     if (local_size > 1024) {
@@ -152,25 +152,24 @@
         return emit_non_cum_binary(compiler, 0x2b, 0x29, 0x5 << 3, 0x2d,
             SLJIT_LOCALS_REG, 0, SLJIT_LOCALS_REG, 0, SLJIT_IMM, local_size);


-    /* Mov arguments to general registers. */
     return SLJIT_SUCCESS;
 }


-SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     CHECK_ERROR_VOID();
-    check_sljit_set_context(compiler, args, temporaries, generals, local_size);
+    check_sljit_set_context(compiler, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;
     compiler->args = args;
     compiler->local_size = (local_size + sizeof(sljit_uw) - 1) & ~(sizeof(sljit_uw) - 1);
     compiler->temporaries_start = compiler->local_size;
     if (temporaries > 3)
         compiler->local_size += (temporaries - 3) * sizeof(sljit_uw);
-    compiler->generals_start = compiler->local_size;
-    if (generals > 3)
-        compiler->local_size += (generals - 3) * sizeof(sljit_uw);
+    compiler->saveds_start = compiler->local_size;
+    if (saveds > 3)
+        compiler->local_size += (saveds - 3) * sizeof(sljit_uw);
 }


 SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_return(struct sljit_compiler *compiler, int op, int src, sljit_w srcw)
@@ -189,7 +188,7 @@
         FAIL_IF(emit_cum_binary(compiler, 0x03, 0x01, 0x0 << 3, 0x05,
                 SLJIT_LOCALS_REG, 0, SLJIT_LOCALS_REG, 0, SLJIT_IMM, compiler->local_size));


-    size = 2 + (compiler->generals <= 3 ? compiler->generals : 3);
+    size = 2 + (compiler->saveds <= 3 ? compiler->saveds : 3);
 #if (defined SLJIT_X86_32_FASTCALL && SLJIT_X86_32_FASTCALL)
     if (compiler->args > 2)
         size += 2;
@@ -202,12 +201,12 @@


     INC_SIZE(size);


-    if (compiler->generals > 0)
-        POP_REG(reg_map[SLJIT_GENERAL_REG1]);
-    if (compiler->generals > 1)
-        POP_REG(reg_map[SLJIT_GENERAL_REG2]);
-    if (compiler->generals > 2)
-        POP_REG(reg_map[SLJIT_GENERAL_REG3]);
+    if (compiler->saveds > 0)
+        POP_REG(reg_map[SLJIT_SAVED_REG1]);
+    if (compiler->saveds > 1)
+        POP_REG(reg_map[SLJIT_SAVED_REG2]);
+    if (compiler->saveds > 2)
+        POP_REG(reg_map[SLJIT_SAVED_REG3]);
     POP_REG(reg_map[TMP_REGISTER]);
 #if (defined SLJIT_X86_32_FASTCALL && SLJIT_X86_32_FASTCALL)
     if (compiler->args > 2)
@@ -432,23 +431,23 @@
     return SLJIT_SUCCESS;
 }


-SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int saveds, int local_size)
 {
     sljit_ub *buf;


     CHECK_ERROR();
-    check_sljit_emit_fast_enter(compiler, dst, dstw, args, temporaries, generals, local_size);
+    check_sljit_emit_fast_enter(compiler, dst, dstw, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;
     compiler->args = args;
     compiler->local_size = (local_size + sizeof(sljit_uw) - 1) & ~(sizeof(sljit_uw) - 1);
     compiler->temporaries_start = compiler->local_size;
     if (temporaries > 3)
         compiler->local_size += (temporaries - 3) * sizeof(sljit_uw);
-    compiler->generals_start = compiler->local_size;
-    if (generals > 3)
-        compiler->local_size += (generals - 3) * sizeof(sljit_uw);
+    compiler->saveds_start = compiler->local_size;
+    if (saveds > 3)
+        compiler->local_size += (saveds - 3) * sizeof(sljit_uw);


     CHECK_EXTRA_REGS(dst, dstw, (void)0);



Modified: code/trunk/sljit/sljitNativeX86_64.c
===================================================================
--- code/trunk/sljit/sljitNativeX86_64.c    2012-01-15 15:50:06 UTC (rev 879)
+++ code/trunk/sljit/sljitNativeX86_64.c    2012-01-15 17:23:37 UTC (rev 880)
@@ -86,24 +86,24 @@
     return code_ptr;
 }


-SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     int size, pushed_size;
     sljit_ub *buf;


     CHECK_ERROR();
-    check_sljit_emit_enter(compiler, args, temporaries, generals, local_size);
+    check_sljit_emit_enter(compiler, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;
     compiler->flags_saved = 0;


-    size = generals;
+    size = saveds;
     /* Including the return address saved by the call instruction. */
-    pushed_size = (generals + 1) * sizeof(sljit_w);
+    pushed_size = (saveds + 1) * sizeof(sljit_w);
 #ifndef _WIN64
-    if (generals >= 2)
-        size += generals - 1;
+    if (saveds >= 2)
+        size += saveds - 1;
 #else
     /* Saving the virtual stack pointer. */
     compiler->has_locals = local_size > 0;
@@ -111,8 +111,8 @@
         size += 2;
         pushed_size += sizeof(sljit_w);
     }
-    if (generals >= 4)
-        size += generals - 3;
+    if (saveds >= 4)
+        size += saveds - 3;
     if (temporaries >= 5) {
         size += (5 - 4) * 2;
         pushed_size += sizeof(sljit_w);
@@ -124,37 +124,37 @@
         FAIL_IF(!buf);


         INC_SIZE(size);
-        if (generals >= 5) {
-            SLJIT_COMPILE_ASSERT(reg_map[SLJIT_GENERAL_EREG2] >= 8, general_ereg2_is_hireg);
+        if (saveds >= 5) {
+            SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SAVED_EREG2] >= 8, saved_ereg2_is_hireg);
             *buf++ = REX_B;
-            PUSH_REG(reg_lmap[SLJIT_GENERAL_EREG2]);
+            PUSH_REG(reg_lmap[SLJIT_SAVED_EREG2]);
         }
-        if (generals >= 4) {
-            SLJIT_COMPILE_ASSERT(reg_map[SLJIT_GENERAL_EREG1] >= 8, general_ereg1_is_hireg);
+        if (saveds >= 4) {
+            SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SAVED_EREG1] >= 8, saved_ereg1_is_hireg);
             *buf++ = REX_B;
-            PUSH_REG(reg_lmap[SLJIT_GENERAL_EREG1]);
+            PUSH_REG(reg_lmap[SLJIT_SAVED_EREG1]);
         }
-        if (generals >= 3) {
+        if (saveds >= 3) {
 #ifndef _WIN64
-            SLJIT_COMPILE_ASSERT(reg_map[SLJIT_GENERAL_REG3] >= 8, general_reg3_is_hireg);
+            SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SAVED_REG3] >= 8, saved_reg3_is_hireg);
             *buf++ = REX_B;
 #else
-            SLJIT_COMPILE_ASSERT(reg_map[SLJIT_GENERAL_REG3] < 8, general_reg3_is_loreg);
+            SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SAVED_REG3] < 8, saved_reg3_is_loreg);
 #endif
-            PUSH_REG(reg_lmap[SLJIT_GENERAL_REG3]);
+            PUSH_REG(reg_lmap[SLJIT_SAVED_REG3]);
         }
-        if (generals >= 2) {
+        if (saveds >= 2) {
 #ifndef _WIN64
-            SLJIT_COMPILE_ASSERT(reg_map[SLJIT_GENERAL_REG2] >= 8, general_reg2_is_hireg);
+            SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SAVED_REG2] >= 8, saved_reg2_is_hireg);
             *buf++ = REX_B;
 #else
-            SLJIT_COMPILE_ASSERT(reg_map[SLJIT_GENERAL_REG2] < 8, general_reg2_is_loreg);
+            SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SAVED_REG2] < 8, saved_reg2_is_loreg);
 #endif
-            PUSH_REG(reg_lmap[SLJIT_GENERAL_REG2]);
+            PUSH_REG(reg_lmap[SLJIT_SAVED_REG2]);
         }
-        if (generals >= 1) {
-            SLJIT_COMPILE_ASSERT(reg_map[SLJIT_GENERAL_REG1] < 8, general_reg1_is_loreg);
-            PUSH_REG(reg_lmap[SLJIT_GENERAL_REG1]);
+        if (saveds >= 1) {
+            SLJIT_COMPILE_ASSERT(reg_map[SLJIT_SAVED_REG1] < 8, saved_reg1_is_loreg);
+            PUSH_REG(reg_lmap[SLJIT_SAVED_REG1]);
         }
 #ifdef _WIN64
         if (temporaries >= 5) {
@@ -173,33 +173,33 @@
         if (args > 0) {
             *buf++ = REX_W;
             *buf++ = 0x8b;
-            *buf++ = 0xc0 | (reg_map[SLJIT_GENERAL_REG1] << 3) | 0x7;
+            *buf++ = 0xc0 | (reg_map[SLJIT_SAVED_REG1] << 3) | 0x7;
         }
         if (args > 1) {
             *buf++ = REX_W | REX_R;
             *buf++ = 0x8b;
-            *buf++ = 0xc0 | (reg_lmap[SLJIT_GENERAL_REG2] << 3) | 0x6;
+            *buf++ = 0xc0 | (reg_lmap[SLJIT_SAVED_REG2] << 3) | 0x6;
         }
         if (args > 2) {
             *buf++ = REX_W | REX_R;
             *buf++ = 0x8b;
-            *buf++ = 0xc0 | (reg_lmap[SLJIT_GENERAL_REG3] << 3) | 0x2;
+            *buf++ = 0xc0 | (reg_lmap[SLJIT_SAVED_REG3] << 3) | 0x2;
         }
 #else
         if (args > 0) {
             *buf++ = REX_W;
             *buf++ = 0x8b;
-            *buf++ = 0xc0 | (reg_map[SLJIT_GENERAL_REG1] << 3) | 0x1;
+            *buf++ = 0xc0 | (reg_map[SLJIT_SAVED_REG1] << 3) | 0x1;
         }
         if (args > 1) {
             *buf++ = REX_W;
             *buf++ = 0x8b;
-            *buf++ = 0xc0 | (reg_map[SLJIT_GENERAL_REG2] << 3) | 0x2;
+            *buf++ = 0xc0 | (reg_map[SLJIT_SAVED_REG2] << 3) | 0x2;
         }
         if (args > 2) {
             *buf++ = REX_W | REX_B;
             *buf++ = 0x8b;
-            *buf++ = 0xc0 | (reg_map[SLJIT_GENERAL_REG3] << 3) | 0x0;
+            *buf++ = 0xc0 | (reg_map[SLJIT_SAVED_REG3] << 3) | 0x0;
         }
 #endif
     }
@@ -269,21 +269,20 @@
     }
 #endif


-    /* Mov arguments to general registers. */
     return SLJIT_SUCCESS;
 }


-SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
 {
     int pushed_size;


     CHECK_ERROR_VOID();
-    check_sljit_set_context(compiler, args, temporaries, generals, local_size);
+    check_sljit_set_context(compiler, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;
     /* Including the return address saved by the call instruction. */
-    pushed_size = (generals + 1) * sizeof(sljit_w);
+    pushed_size = (saveds + 1) * sizeof(sljit_w);
 #ifdef _WIN64
     compiler->has_locals = local_size > 0;
     if (local_size > 0)
@@ -329,15 +328,15 @@
         }
     }


-    size = 1 + compiler->generals;
+    size = 1 + compiler->saveds;
 #ifndef _WIN64
-    if (compiler->generals >= 2)
-        size += compiler->generals - 1;
+    if (compiler->saveds >= 2)
+        size += compiler->saveds - 1;
 #else
     if (compiler->has_locals)
         size += 2;
-    if (compiler->generals >= 4)
-        size += compiler->generals - 3;
+    if (compiler->saveds >= 4)
+        size += compiler->saveds - 3;
     if (compiler->temporaries >= 5)
         size += (5 - 4) * 2;
 #endif
@@ -356,27 +355,27 @@
         POP_REG(reg_lmap[SLJIT_TEMPORARY_EREG2]);
     }
 #endif
-    if (compiler->generals >= 1)
-        POP_REG(reg_map[SLJIT_GENERAL_REG1]);
-    if (compiler->generals >= 2) {
+    if (compiler->saveds >= 1)
+        POP_REG(reg_map[SLJIT_SAVED_REG1]);
+    if (compiler->saveds >= 2) {
 #ifndef _WIN64
         *buf++ = REX_B;
 #endif
-        POP_REG(reg_lmap[SLJIT_GENERAL_REG2]);
+        POP_REG(reg_lmap[SLJIT_SAVED_REG2]);
     }
-    if (compiler->generals >= 3) {
+    if (compiler->saveds >= 3) {
 #ifndef _WIN64
         *buf++ = REX_B;
 #endif
-        POP_REG(reg_lmap[SLJIT_GENERAL_REG3]);
+        POP_REG(reg_lmap[SLJIT_SAVED_REG3]);
     }
-    if (compiler->generals >= 4) {
+    if (compiler->saveds >= 4) {
         *buf++ = REX_B;
-        POP_REG(reg_lmap[SLJIT_GENERAL_EREG1]);
+        POP_REG(reg_lmap[SLJIT_SAVED_EREG1]);
     }
-    if (compiler->generals >= 5) {
+    if (compiler->saveds >= 5) {
         *buf++ = REX_B;
-        POP_REG(reg_lmap[SLJIT_GENERAL_EREG2]);
+        POP_REG(reg_lmap[SLJIT_SAVED_EREG2]);
     }


     RET();
@@ -672,15 +671,15 @@
     return SLJIT_SUCCESS;
 }


-SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int generals, int local_size)
+SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int saveds, int local_size)
 {
     sljit_ub *buf;


     CHECK_ERROR();
-    check_sljit_emit_fast_enter(compiler, dst, dstw, args, temporaries, generals, local_size);
+    check_sljit_emit_fast_enter(compiler, dst, dstw, args, temporaries, saveds, local_size);


     compiler->temporaries = temporaries;
-    compiler->generals = generals;
+    compiler->saveds = saveds;
     compiler->local_size = (local_size + sizeof(sljit_uw) - 1) & ~(sizeof(sljit_uw) - 1);
 #ifdef _WIN64
     compiler->local_size += 4 * sizeof(sljit_w);
@@ -815,9 +814,9 @@
         return SLJIT_SUCCESS;
     }


-    dst_r = (dst >= SLJIT_TEMPORARY_REG1 && dst <= SLJIT_GENERAL_REG3) ? dst : TMP_REGISTER;
+    dst_r = (dst >= SLJIT_TEMPORARY_REG1 && dst <= SLJIT_SAVED_REG3) ? dst : TMP_REGISTER;


-    if ((dst & SLJIT_MEM) && (src >= SLJIT_TEMPORARY_REG1 && src <= SLJIT_GENERAL_REG3))
+    if ((dst & SLJIT_MEM) && (src >= SLJIT_TEMPORARY_REG1 && src <= SLJIT_SAVED_REG3))
         dst_r = src;
     else {
         if (sign) {


Modified: code/trunk/sljit/sljitNativeX86_common.c
===================================================================
--- code/trunk/sljit/sljitNativeX86_common.c    2012-01-15 15:50:06 UTC (rev 879)
+++ code/trunk/sljit/sljitNativeX86_common.c    2012-01-15 17:23:37 UTC (rev 880)
@@ -80,8 +80,8 @@
         p = SLJIT_MEM1(SLJIT_LOCALS_REG); \
         do; \
     } \
-    else if (p >= SLJIT_GENERAL_EREG1 && p <= SLJIT_GENERAL_EREG2) { \
-        w = compiler->generals_start + (p - SLJIT_GENERAL_EREG1) * sizeof(sljit_w); \
+    else if (p >= SLJIT_SAVED_EREG1 && p <= SLJIT_SAVED_EREG2) { \
+        w = compiler->saveds_start + (p - SLJIT_SAVED_EREG1) * sizeof(sljit_w); \
         p = SLJIT_MEM1(SLJIT_LOCALS_REG); \
         do; \
     }
@@ -95,7 +95,7 @@


 /* Note: r12 & 0x7 == 0b100, which decoded as SIB byte present
    Note: avoid to use r12 and r13 for memory addessing
-   therefore r12 is better for GENERAL_EREG than GENERAL_REG. */
+   therefore r12 is better for SAVED_EREG than SAVED_REG. */
 #ifndef _WIN64
 /* 1st passed in rdi, 2nd argument passed in rsi, 3rd in rdx. */
 static SLJIT_CONST sljit_ub reg_map[SLJIT_NO_REGISTERS + 4] = {
@@ -1985,7 +1985,7 @@
     check_sljit_get_register_index(reg);
 #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)
     if (reg == SLJIT_TEMPORARY_EREG1 || reg == SLJIT_TEMPORARY_EREG2
-            || reg == SLJIT_GENERAL_EREG1 || reg == SLJIT_GENERAL_EREG2)
+            || reg == SLJIT_SAVED_EREG1 || reg == SLJIT_SAVED_EREG2)
         return -1;
 #endif
     return reg_map[reg];
@@ -2752,7 +2752,7 @@


             *buf++ = 0x0f;
             *buf++ = 0xb6;
-            if (dst >= SLJIT_GENERAL_REG1 && dst <= SLJIT_NO_REGISTERS)
+            if (dst >= SLJIT_SAVED_REG1 && dst <= SLJIT_NO_REGISTERS)
                 *buf = 0xC0 | (reg_map[dst] << 3);
             else {
                 *buf = 0xC0;