Mercurial > hg > graal-jvmci-8
diff src/share/vm/graal/graalVmIds.hpp @ 3632:136ea96eb7f8
Remove the need for VmId (last usage was the constant pool).
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Mon, 14 Nov 2011 22:33:15 +0100 |
parents | f00918f35c7f |
children | 076542d505cd |
line wrap: on
line diff
--- a/src/share/vm/graal/graalVmIds.hpp Mon Nov 14 15:36:09 2011 +0100 +++ b/src/share/vm/graal/graalVmIds.hpp Mon Nov 14 22:33:15 2011 +0100 @@ -33,7 +33,6 @@ private: static GrowableArray<address>* _stubs; - static GrowableArray<jobject>* _localHandles; static oop getObject(jlong id); @@ -49,28 +48,16 @@ // Initializes the VmIds for a compilation, by creating the arrays static void initializeObjects(); - // Cleans up after a compilation, by deallocating the arrays - static void cleanupLocalObjects(); // Adds a stub address, and returns the corresponding vmId (which is of type STUB) static jlong addStub(address stub); - // Adds an object, and returns the corresponding vmId (with the given type) - static jlong add(Handle obj, jlong type); - - // Adds an object, and returns the corresponding vmId (the type of which is determined by the template parameter) - template <typename T> static jlong add(T obj); - - // Returns the stub address with the given vmId static address getStub(jlong id); + // Returns the stub address with the given vmId taken from a java.lang.Long static address getStub(oop id); - // Returns the object with the given id, the return type is defined by the template parameter (which must correspond to the actual type of the vmId) - template <typename T> static T get(jlong id); - - // Helper function to convert a symbol to a java.lang.String object template <typename T> static T toString(Symbol* symbol, TRAPS); @@ -81,40 +68,6 @@ static jlong getBoxedLong(oop obj); }; - -template <> inline jlong VmIds::add<klassOop>(klassOop obj) { - assert(obj != NULL, "trying to add NULL<klassOop>"); - assert(obj->is_klass(), "trying to add mistyped object"); - return add(Handle(obj), CLASS); -} -template <> inline jlong VmIds::add<constantPoolOop>(constantPoolOop obj) { - assert(obj != NULL, "trying to add NULL<constantPoolOop>"); - assert(obj->is_constantPool(), "trying to add mistyped object"); - return add(Handle(obj), CONSTANT_POOL); -} -template <> inline jlong VmIds::add<oop>(oop obj) { - assert(obj != NULL, "trying to add NULL<oop>"); - assert(obj->is_oop(), "trying to add mistyped object"); - return add(Handle(obj), CONSTANT); -} - - -template <> inline klassOop VmIds::get<klassOop>(jlong id) { - assert((id & TYPE_MASK) == CLASS, "CLASS expected"); - assert(getObject(id)->is_klass(), "klassOop expected"); - return (klassOop)getObject(id); -} -template <> inline constantPoolOop VmIds::get<constantPoolOop>(jlong id) { - assert((id & TYPE_MASK) == CONSTANT_POOL, "CONSTANT_POOL expected"); - assert(getObject(id)->is_constantPool(), "constantPoolOop expected"); - return (constantPoolOop)getObject(id); -} -template <> inline oop VmIds::get<oop>(jlong id) { - assert((id & TYPE_MASK) == CONSTANT, "CONSTANT expected"); - assert(getObject(id)->is_oop(true), "oop expected"); - return (oop)getObject(id); -} - inline address VmIds::getStub(oop obj) { return getStub(getBoxedLong(obj)); } @@ -122,12 +75,15 @@ template <> inline Handle VmIds::toString<Handle>(Symbol* symbol, TRAPS) { return java_lang_String::create_from_symbol(symbol, THREAD); } + template <> inline oop VmIds::toString<oop>(Symbol* symbol, TRAPS) { return toString<Handle>(symbol, THREAD)(); } + template <> inline jstring VmIds::toString<jstring>(Symbol* symbol, TRAPS) { return (jstring)JNIHandles::make_local(toString<oop>(symbol, THREAD)); } + template <> inline jobject VmIds::toString<jobject>(Symbol* symbol, TRAPS) { return JNIHandles::make_local(toString<oop>(symbol, THREAD)); }