projects
/
cacao.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* Updated to jitcache-arm-x86 branch d4f6023b26c5+d1b5b1c106ac
[cacao.git]
/
src
/
vm
/
jit
/
jit.cpp
diff --git
a/src/vm/jit/jit.cpp
b/src/vm/jit/jit.cpp
index 6852a963303b3bc177b118407ca0da0584d8aa50..e7dddde59906ac26f1b5a47cb9fa7c76b584d054 100644
(file)
--- a/
src/vm/jit/jit.cpp
+++ b/
src/vm/jit/jit.cpp
@@
-65,6
+65,10
@@
#include "vm/jit/stack.h"
#include "vm/jit/stubs.hpp"
#include "vm/jit/stack.h"
#include "vm/jit/stubs.hpp"
+#if defined(ENABLE_JITCACHE)
+# include "vm/jit/jitcache.hpp"
+#endif
+
#if defined(ENABLE_OPAGENT)
#include "vm/jit/oprofile-agent.hpp"
#endif
#if defined(ENABLE_OPAGENT)
#include "vm/jit/oprofile-agent.hpp"
#endif
@@
-176,7
+180,7
@@
void jit_init(void)
#if defined(ENABLE_OPAGENT)
if (opt_EnableOpagent)
#if defined(ENABLE_OPAGENT)
if (opt_EnableOpagent)
- OprofileAgent
_
initialize();
+ OprofileAgent
::
initialize();
#endif
}
#endif
}
@@
-191,7
+195,7
@@
void jit_close(void)
{
#if defined(ENABLE_OPAGENT)
if (opt_EnableOpagent)
{
#if defined(ENABLE_OPAGENT)
if (opt_EnableOpagent)
- OprofileAgent
_
close();
+ OprofileAgent
::
close();
#endif
}
#endif
}
@@
-312,6
+316,17
@@
u1 *jit_compile(methodinfo *m)
STATISTICS(count_methods++);
STATISTICS(count_methods++);
+#if defined (ENABLE_JITCACHE)
+
+ if (jitcache_load (m))
+ {
+ m->mutex->unlock();
+
+ return m->code->entrypoint;
+ }
+
+#endif
+
#if defined(ENABLE_STATISTICS)
/* measure time */
#if defined(ENABLE_STATISTICS)
/* measure time */
@@
-402,6
+417,10
@@
u1 *jit_compile(methodinfo *m)
DEBUG_JIT_COMPILEVERBOSE("Running: ");
}
DEBUG_JIT_COMPILEVERBOSE("Running: ");
}
+#if defined (ENABLE_JITCACHE)
+ jitcache_store(m);
+#endif
+
#if defined(ENABLE_STATISTICS)
/* measure time */
#if defined(ENABLE_STATISTICS)
/* measure time */
@@
-411,7
+430,7
@@
u1 *jit_compile(methodinfo *m)
#if defined(ENABLE_OPAGENT)
if (opt_EnableOpagent)
#if defined(ENABLE_OPAGENT)
if (opt_EnableOpagent)
- OprofileAgent
_
newmethod(m);
+ OprofileAgent
::
newmethod(m);
#endif
/* leave the monitor */
#endif
/* leave the monitor */
@@
-522,7
+541,7
@@
u1 *jit_recompile(methodinfo *m)
#if defined(ENABLE_OPAGENT)
if (opt_EnableOpagent)
#if defined(ENABLE_OPAGENT)
if (opt_EnableOpagent)
- OprofileAgent
_
newmethod(m);
+ OprofileAgent
::
newmethod(m);
#endif
DEBUG_JIT_COMPILEVERBOSE("Recompiling done: ");
#endif
DEBUG_JIT_COMPILEVERBOSE("Recompiling done: ");
@@
-569,17
+588,15
@@
static u1 *jit_compile_intern(jitdata *jd)
show_filters_apply(jd->m);
#endif
show_filters_apply(jd->m);
#endif
- /* Handle native methods and create a native stub. */
-
+ // Handle native methods and create a native stub.
if (m->flags & ACC_NATIVE) {
if (m->flags & ACC_NATIVE) {
- functionptr f;
-
- f = native_method_resolve(m);
+ NativeMethods& nm = VM::get_current()->get_nativemethods();
+ void* f = nm.resolve_method(m);
if (f == NULL)
return NULL;
if (f == NULL)
return NULL;
- code = NativeStub::generate(m, f);
+ code = NativeStub::generate(m,
(functionptr)
f);
/* Native methods are never recompiled. */
/* Native methods are never recompiled. */