Mercurial > hg > truffle
diff src/share/vm/oops/instanceKlass.cpp @ 15106:6876a4599b7e
create NodeClass for each Node subclass during class initialization of the latter
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 15 Apr 2014 13:34:29 +0200 |
parents | 5e6f29f287d6 |
children | bd4c7b669bd8 |
line wrap: on
line diff
--- a/src/share/vm/oops/instanceKlass.cpp Tue Apr 15 12:20:43 2014 +0200 +++ b/src/share/vm/oops/instanceKlass.cpp Tue Apr 15 13:34:29 2014 +0200 @@ -1201,6 +1201,18 @@ JavaValue result(T_VOID); JavaCalls::call(&result, h_method, &args, CHECK); // Static call (no args) } + +#ifdef GRAAL + if (this_oop->class_loader() == NULL && this_oop->is_subtype_of(SystemDictionary::Node_klass())) { + if (this_oop() != SystemDictionary::Node_klass()) { + // Create the NodeClass for a Node subclass. + TempNewSymbol sig = SymbolTable::new_symbol("(Ljava/lang/Class;)Lcom/oracle/graal/graph/NodeClass;", CHECK); + JavaValue result(T_OBJECT); + JavaCalls::call_static(&result, SystemDictionary::NodeClass_klass(), vmSymbols::get_name(), sig, this_oop->java_mirror(), CHECK); + this_oop->set_graal_node_class((oop) result.get_jobject()); + } + } +#endif }