Mercurial > hg > truffle
comparison src/share/vm/oops/typeArrayKlass.cpp @ 2177:3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
Summary: move symbols from permgen into C heap and reference count them
Reviewed-by: never, acorn, jmasa, stefank
author | coleenp |
---|---|
date | Thu, 27 Jan 2011 16:11:27 -0800 |
parents | d4fca0a6abde |
children | e5383553fd4e |
comparison
equal
deleted
inserted
replaced
2176:27e4ea99855d | 2177:3582bf76420e |
---|---|
51 | 51 |
52 klassOop typeArrayKlass::create_klass(BasicType type, int scale, | 52 klassOop typeArrayKlass::create_klass(BasicType type, int scale, |
53 const char* name_str, TRAPS) { | 53 const char* name_str, TRAPS) { |
54 typeArrayKlass o; | 54 typeArrayKlass o; |
55 | 55 |
56 symbolHandle sym(symbolOop(NULL)); | 56 Symbol* sym = NULL; |
57 // bootstrapping: don't create sym if symbolKlass not created yet | 57 if (name_str != NULL) { |
58 if (Universe::symbolKlassObj() != NULL && name_str != NULL) { | 58 sym = SymbolTable::new_symbol(name_str, CHECK_NULL); |
59 sym = oopFactory::new_symbol_handle(name_str, CHECK_NULL); | |
60 } | 59 } |
61 KlassHandle klassklass (THREAD, Universe::typeArrayKlassKlassObj()); | 60 KlassHandle klassklass (THREAD, Universe::typeArrayKlassKlassObj()); |
62 | 61 |
63 arrayKlassHandle k = base_create_array_klass(o.vtbl_value(), header_size(), klassklass, CHECK_NULL); | 62 arrayKlassHandle k = base_create_array_klass(o.vtbl_value(), header_size(), klassklass, CHECK_NULL); |
64 typeArrayKlass* ak = typeArrayKlass::cast(k()); | 63 typeArrayKlass* ak = typeArrayKlass::cast(k()); |
65 ak->set_name(sym()); | 64 ak->set_name(sym); |
66 ak->set_layout_helper(array_layout_helper(type)); | 65 ak->set_layout_helper(array_layout_helper(type)); |
67 assert(scale == (1 << ak->log2_element_size()), "scale must check out"); | 66 assert(scale == (1 << ak->log2_element_size()), "scale must check out"); |
68 assert(ak->oop_is_javaArray(), "sanity"); | 67 assert(ak->oop_is_javaArray(), "sanity"); |
69 assert(ak->oop_is_typeArray(), "sanity"); | 68 assert(ak->oop_is_typeArray(), "sanity"); |
70 ak->set_max_length(arrayOopDesc::max_array_length(type)); | 69 ak->set_max_length(arrayOopDesc::max_array_length(type)); |