MLVM hotspot will not compile with GCC 4.3.2
Chanwit Kaewkasi
chanwit at gmail.com
Mon Jul 6 18:50:40 PDT 2009
Hi all,
I upgraded the compile to GCC 4.3.2 and failed to rebuild hotspot.
The compiler reported as follow:
cc1plus: warnings being treated as errors
/opt/openjdk/bsd-port/hotspot/src/share/vm/oops/klass.cpp: In member
function 'virtual char* Klass::signature_name() const':
/opt/openjdk/bsd-port/hotspot/src/share/vm/oops/klass.cpp:505: error:
deprecated conversion from string constant to 'char*'
Some methods need declaring 'const char*' instead of 'char*'. Here's a
patch to correct them.
------------------------------------------------------------------------------
diff --git a/src/share/vm/oops/instanceKlass.cpp
b/src/share/vm/oops/instanceKlass.cpp
--- a/src/share/vm/oops/instanceKlass.cpp
+++ b/src/share/vm/oops/instanceKlass.cpp
@@ -1761,7 +1761,7 @@
}
}
-char* instanceKlass::signature_name() const {
+const char* instanceKlass::signature_name() const {
const char* src = (const char*) (name()->as_C_string());
const int src_length = (int)strlen(src);
char* dest = NEW_RESOURCE_ARRAY(char, src_length + 3);
diff --git a/src/share/vm/oops/instanceKlass.hpp
b/src/share/vm/oops/instanceKlass.hpp
--- a/src/share/vm/oops/instanceKlass.hpp
+++ b/src/share/vm/oops/instanceKlass.hpp
@@ -678,7 +678,7 @@
#endif // SERIALGC
// Naming
- char* signature_name() const;
+ const char* signature_name() const;
// Iterators
int oop_oop_iterate(oop obj, OopClosure* blk) {
diff --git a/src/share/vm/oops/klass.cpp b/src/share/vm/oops/klass.cpp
--- a/src/share/vm/oops/klass.cpp
+++ b/src/share/vm/oops/klass.cpp
@@ -501,7 +501,7 @@
}
-char* Klass::signature_name() const {
+const char* Klass::signature_name() const {
if (name() == NULL) return "<unknown>";
return name()->as_C_string();
}
diff --git a/src/share/vm/oops/klass.hpp b/src/share/vm/oops/klass.hpp
--- a/src/share/vm/oops/klass.hpp
+++ b/src/share/vm/oops/klass.hpp
@@ -546,7 +546,7 @@
// For arrays, this returns the name of the element with a leading '['.
// For classes, this returns the name with a leading 'L' and a trailing ';'
// and the package separators as '/'.
- virtual char* signature_name() const;
+ virtual const char* signature_name() const;
// garbage collection support
virtual void oop_follow_contents(oop obj) = 0;
------------------------------------------------------------------------------
Best regards,
Chanwit
More information about the mlvm-dev
mailing list