[kaffe] CVS kaffe (stack): Bring jit1 up-to-date with respect to
jit3's jitCodeHeader stuff.
Kaffe CVS
cvs-commits at kaffe.org
Tue Dec 21 14:25:55 PST 2004
PatchSet 5704
Date: 2004/12/21 22:21:35
Author: stack
Branch: HEAD
Tag: (none)
Log:
Bring jit1 up-to-date with respect to jit3's jitCodeHeader stuff.
Members:
ChangeLog:1.3249->1.3250
kaffe/kaffevm/jit/machine.c:1.72->1.73
kaffe/kaffevm/jit/machine.h:1.19->1.20
kaffe/kaffevm/jit/native-wrapper.c:1.4->1.5
kaffe/kaffevm/jit3/machine.c:1.65->1.66
kaffe/kaffevm/jit3/machine.h:1.22->1.23
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.3249 kaffe/ChangeLog:1.3250
--- kaffe/ChangeLog:1.3249 Tue Dec 21 18:03:58 2004
+++ kaffe/ChangeLog Tue Dec 21 22:21:35 2004
@@ -1,5 +1,20 @@
2004-12-21 Timothy S. Stack <stack at cs.utah.edu>
+ * kaffe/kaffevm/jit/machine.h, kaffe/kaffevm/jit/machine.c:
+ Add jitCodeHeader support.
+
+ * kaffe/kaffevm/jit/native-wrapper.c:
+ Put ifdef guards around the initFakeCalls call since it isn't
+ available in jit1.
+
+ * kaffe/kaffevm/jit3/machine.c:
+ Remove dead code.
+
+ * kaffe/kaffevm/jit3/machine.h:
+ Add initFakeCalls proto and HAVE_FAKE_CALLS define.
+
+2004-12-21 Timothy S. Stack <stack at cs.utah.edu>
+
* kaffe/kaffevm/external.c:
Fix a typo.
Index: kaffe/kaffe/kaffevm/jit/machine.c
diff -u kaffe/kaffe/kaffevm/jit/machine.c:1.72 kaffe/kaffe/kaffevm/jit/machine.c:1.73
--- kaffe/kaffe/kaffevm/jit/machine.c:1.72 Mon Dec 20 00:55:14 2004
+++ kaffe/kaffe/kaffevm/jit/machine.c Tue Dec 21 22:21:36 2004
@@ -451,8 +451,8 @@
int exc_len = 0;
#endif
uint32 constlen;
+ jitCodeHeader *jch;
nativecode* methblock;
- nativecode* codebase;
/* Emit pending instructions */
generateInsnSequence(codeInfo);
@@ -460,35 +460,41 @@
/* Okay, put this into malloc'ed memory */
constlen = nConst * sizeof(union _constpoolval);
/* Allocate some padding to align codebase if so desired
- */
- methblock = gc_malloc(exc_len + constlen + CODEPC + (align ? (align - ALIGNMENT_OF_SIZE(sizeof(jdouble))) : 0), KGC_ALLOC_JITCODE);
+ */
+ methblock = gc_malloc(sizeof(jitCodeHeader) + exc_len + constlen + CODEPC + (align ? (align - ALIGNMENT_OF_SIZE(sizeof(jdouble))) : 0), KGC_ALLOC_JITCODE);
if (methblock == 0) {
postOutOfMemory(einfo);
return (false);
}
- codebase = methblock + exc_len + constlen;
+ jch = (jitCodeHeader *)methblock;
+ jch->pool = (void *)((char *)(jch + 1)) + exc_len;
+ jch->code_start = ((char *)jch->pool) + constlen;
+ jch->code_len = CODEPC;
/* align entry point if so desired */
- if (align != 0 && (unsigned long)codebase % align != 0) {
- int pad = (align - (unsigned long)codebase % align);
- assert(pad <= align - ALIGNMENT_OF_SIZE(sizeof(jdouble)));
- codebase = (char*)codebase + pad;
+ if (align != 0 && (unsigned long)jch->code_start % align != 0) {
+ int pad = (align - (unsigned long)jch->code_start % align);
+
+ assert(pad <= align - ALIGNMENT_OF_SIZE(sizeof(jdouble)));
+
+ jch->code_start = (char*)jch->code_start + pad;
}
- memcpy(codebase, codeblock, CODEPC);
+ memcpy(jch->code_start, codeblock, CODEPC);
addToCounter(&jitcodeblock, "jitmem-codeblock", 1,
-(jlong)GCSIZEOF(codeblock));
KFREE(codeblock);
/* Establish any code constants */
- establishConstants(methblock + exc_len);
+ establishConstants(jch->pool);
/* Link it */
- linkLabels(codeInfo, (uintp)codebase);
+ linkLabels(codeInfo, (uintp)jch->code_start);
/* Note info on the compiled code for later installation */
code->mem = methblock;
code->memlen = exc_len + constlen + CODEPC;
- code->code = codebase;
+ code->code = jch->code_start;
code->codelen = CODEPC;
+
return (true);
}
@@ -518,6 +524,7 @@
{
int i;
jexceptionEntry* e;
+ jitCodeHeader *jch;
void *tramp;
/* Work out new estimate of code per bytecode */
@@ -537,6 +544,9 @@
meth->c.ncode.ncode_start = code->mem;
meth->c.ncode.ncode_end = (char*)code->code + code->codelen;
+ jch = (jitCodeHeader *)code->mem;
+ jch->method = meth;
+
/* Flush code out of cache */
FLUSH_DCACHE(METHOD_NATIVECODE(meth), meth->c.ncode.ncode_end);
Index: kaffe/kaffe/kaffevm/jit/machine.h
diff -u kaffe/kaffe/kaffevm/jit/machine.h:1.19 kaffe/kaffe/kaffevm/jit/machine.h:1.20
--- kaffe/kaffe/kaffevm/jit/machine.h:1.19 Fri Sep 19 13:15:15 2003
+++ kaffe/kaffe/kaffevm/jit/machine.h Tue Dec 21 22:21:36 2004
@@ -140,6 +140,14 @@
struct _methods;
bool translate(struct _methods*, errorInfo*);
+typedef struct _jitCodeHeader {
+ unsigned long flags;
+ Method *method;
+ void *pool;
+ nativecode *code_start;
+ size_t code_len;
+} jitCodeHeader;
+
typedef struct _nativeCodeInfo {
void* mem;
int memlen;
Index: kaffe/kaffe/kaffevm/jit/native-wrapper.c
diff -u kaffe/kaffe/kaffevm/jit/native-wrapper.c:1.4 kaffe/kaffe/kaffevm/jit/native-wrapper.c:1.5
--- kaffe/kaffe/kaffevm/jit/native-wrapper.c:1.4 Tue Dec 21 00:15:31 2004
+++ kaffe/kaffe/kaffevm/jit/native-wrapper.c Tue Dec 21 22:21:36 2004
@@ -29,8 +29,6 @@
#include "feedback.h"
#endif
-void initFakeCalls(void);
-
static void*
startJNIcall(void)
{
@@ -110,7 +108,9 @@
maxArgs = maxLocal = count; /* make sure args are spilled if needed */
maxStack = 0;
+#if defined(HAVE_FAKE_CALLS)
initFakeCalls();
+#endif
success = initInsnSequence(xmeth, 0, maxLocal, maxStack, &info);
if (!success) {
goto done;
Index: kaffe/kaffe/kaffevm/jit3/machine.c
diff -u kaffe/kaffe/kaffevm/jit3/machine.c:1.65 kaffe/kaffe/kaffevm/jit3/machine.c:1.66
--- kaffe/kaffe/kaffevm/jit3/machine.c:1.65 Tue Dec 21 08:06:37 2004
+++ kaffe/kaffe/kaffevm/jit3/machine.c Tue Dec 21 22:21:37 2004
@@ -171,7 +171,6 @@
fieldInfo finfo;
Hjava_lang_Class* crinfo;
codeinfo* mycodeInfo;
- jitCodeHeader *jch;
nativeCodeInfo ncode;
@@ -185,7 +184,6 @@
lockClass(xmeth->class);
- jch = xmeth->c.ncode.ncode_start;
if (METHOD_TRANSLATED(xmeth)) {
goto done3;
}
Index: kaffe/kaffe/kaffevm/jit3/machine.h
diff -u kaffe/kaffe/kaffevm/jit3/machine.h:1.22 kaffe/kaffe/kaffevm/jit3/machine.h:1.23
--- kaffe/kaffe/kaffevm/jit3/machine.h:1.22 Tue Dec 21 00:15:32 2004
+++ kaffe/kaffe/kaffevm/jit3/machine.h Tue Dec 21 22:21:37 2004
@@ -190,6 +190,8 @@
extern jboolean initInsnSequence(Method *meth, int codesize, int localsz, int stacksz, struct _errorInfo *einfo);
extern jboolean finishInsnSequence(void*, nativeCodeInfo*, struct _errorInfo*);
extern void installMethodCode(void*, Method*, nativeCodeInfo*);
+#define HAVE_FAKE_CALLS 1
+void initFakeCalls(void);
extern struct _label_* newFakeCall(void*, uintp);
extern void doSpill(struct _sequence*);
extern void doReload(struct _sequence*);
More information about the kaffe
mailing list