changeset 1412:9195b99c841b

Added first VM entry method. TODO: Check why initialization method of compiler is not called. Register native methods only once.
author Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
date Mon, 17 May 2010 16:37:23 +0200
parents d0753a274633
children 1ecc8f0aad00
files src/share/vm/c1x/c1x_Compiler.cpp src/share/vm/c1x/c1x_VMEntries.cpp src/share/vm/c1x/c1x_VMEntries.hpp src/share/vm/includeDB_compiler1
diffstat 4 files changed, 75 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/c1x/c1x_Compiler.cpp	Wed May 12 16:30:40 2010 +0200
+++ b/src/share/vm/c1x/c1x_Compiler.cpp	Mon May 17 16:37:23 2010 +0200
@@ -30,11 +30,19 @@
 // Initialization
 void C1XCompiler::initialize() {
 	TRACE_C1X_1("initialize");
+
+  JNIEnv *env = ((JavaThread *)Thread::current())->jni_environment();
+  jclass klass = env->FindClass("com/sun/hotspot/c1x/VMEntries");
+  env->RegisterNatives(klass, VMEntries_methods, VMEntries_methods_count() );
 }
 
 // Compilation entry point for methods
 void C1XCompiler::compile_method(ciEnv* env, ciMethod* target, int entry_bci) {
+  
+  initialize();
+
 	VM_ENTRY_MARK;
+
 	
 	ResourceMark rm;
 	HandleMark hm;
--- a/src/share/vm/c1x/c1x_VMEntries.cpp	Wed May 12 16:30:40 2010 +0200
+++ b/src/share/vm/c1x/c1x_VMEntries.cpp	Mon May 17 16:37:23 2010 +0200
@@ -24,4 +24,19 @@
 
 
 # include "incls/_precompiled.incl"
-# include "incls/_c1x_VMEntries.cpp.incl"
\ No newline at end of file
+# include "incls/_c1x_VMEntries.cpp.incl"
+
+JNIEXPORT jbyteArray JNICALL Java_com_sun_hotspot_c1x_VMEntries_RiMethod_1code
+(JNIEnv *, jclass, jobject) {
+  tty->print_cr("hello world");
+  return NULL;
+}
+
+
+JNINativeMethod VMEntries_methods[] = {
+  {CC"RiMethod_code",            CC"(Ljava/lang/Object;)[B",                 FN_PTR(Java_com_sun_hotspot_c1x_VMEntries_RiMethod_1code)}
+};
+
+int VMEntries_methods_count() {
+  return sizeof(VMEntries_methods) / sizeof(JNINativeMethod);
+}
\ No newline at end of file
--- a/src/share/vm/c1x/c1x_VMEntries.hpp	Wed May 12 16:30:40 2010 +0200
+++ b/src/share/vm/c1x/c1x_VMEntries.hpp	Mon May 17 16:37:23 2010 +0200
@@ -1,24 +1,50 @@
-/*
- * Copyright 2000-2010 Sun Microsystems, Inc.  All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- */
-
+/*
+ * Copyright 2000-2010 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ *
+ */
+
+#ifndef _Included_com_sun_hotspot_c1x_VMEntries
+#define _Included_com_sun_hotspot_c1x_VMEntries
+#ifdef __cplusplus
+extern "C" {
+
+#define CC (char*)  /*cast a literal from (const char*)*/
+#define FN_PTR(f) CAST_FROM_FN_PTR(void*, &f)
+
+
+#endif
+  /*
+  * Class:     com_sun_hotspot_c1x_VMEntries
+  * Method:    RiMethod_code
+  * Signature: (Ljava/lang/Object;)[B
+  */
+  JNIEXPORT jbyteArray JNICALL Java_com_sun_hotspot_c1x_VMEntries_RiMethod_1code
+    (JNIEnv *, jclass, jobject);
+
+
+extern JNINativeMethod VMEntries_methods[];
+int VMEntries_methods_count();
+
+#ifdef __cplusplus
+}
+#endif
+#endif
\ No newline at end of file
--- a/src/share/vm/includeDB_compiler1	Wed May 12 16:30:40 2010 +0200
+++ b/src/share/vm/includeDB_compiler1	Mon May 17 16:37:23 2010 +0200
@@ -450,6 +450,7 @@
 
 c1x_Compiler.cpp                        c1x_Compiler.hpp
 c1x_Compiler.cpp                        c1x_VMExits.hpp
+c1x_Compiler.cpp                        c1x_VMEntries.hpp
 
 c1x_VMEntries.cpp                       c1x_VMEntries.hpp
 c1x_VMEntries.cpp                       c1x_VMExits.hpp