23 */
24
25 #include "precompiled.hpp"
26 #include "classfile/javaClasses.hpp"
27 #include "classfile/symbolTable.hpp"
28 #include "classfile/systemDictionary.hpp"
29 #include "classfile/vmSymbols.hpp"
30 #include "gc/shared/collectedHeap.inline.hpp"
31 #include "memory/oopFactory.hpp"
32 #include "memory/resourceArea.hpp"
33 #include "memory/universe.inline.hpp"
34 #include "oops/instanceKlass.hpp"
35 #include "oops/instanceOop.hpp"
36 #include "oops/objArrayOop.hpp"
37 #include "oops/oop.inline.hpp"
38
39
40 typeArrayOop oopFactory::new_charArray(const char* utf8_str, TRAPS) {
41 int length = utf8_str == NULL ? 0 : UTF8::unicode_length(utf8_str);
42 typeArrayOop result = new_charArray(length, CHECK_NULL);
43 if (length > 0) {
44 UTF8::convert_to_unicode(utf8_str, result->char_at_addr(0), length);
45 }
46 return result;
47 }
48
49 typeArrayOop oopFactory::new_tenured_charArray(int length, TRAPS) {
50 return TypeArrayKlass::cast(Universe::charArrayKlassObj())->allocate(length, THREAD);
51 }
52
53 typeArrayOop oopFactory::new_typeArray(BasicType type, int length, TRAPS) {
54 Klass* type_asKlassOop = Universe::typeArrayKlassObj(type);
55 TypeArrayKlass* type_asArrayKlass = TypeArrayKlass::cast(type_asKlassOop);
56 typeArrayOop result = type_asArrayKlass->allocate(length, THREAD);
57 return result;
58 }
59
60 // Create a Java array that points to metadata.
61 // As far as Java code is concerned, a metaData array is either an array of
62 // int or long depending on pointer size. Only a few things use this, like
|
23 */
24
25 #include "precompiled.hpp"
26 #include "classfile/javaClasses.hpp"
27 #include "classfile/symbolTable.hpp"
28 #include "classfile/systemDictionary.hpp"
29 #include "classfile/vmSymbols.hpp"
30 #include "gc/shared/collectedHeap.inline.hpp"
31 #include "memory/oopFactory.hpp"
32 #include "memory/resourceArea.hpp"
33 #include "memory/universe.inline.hpp"
34 #include "oops/instanceKlass.hpp"
35 #include "oops/instanceOop.hpp"
36 #include "oops/objArrayOop.hpp"
37 #include "oops/oop.inline.hpp"
38
39
40 typeArrayOop oopFactory::new_charArray(const char* utf8_str, TRAPS) {
41 int length = utf8_str == NULL ? 0 : UTF8::unicode_length(utf8_str);
42 typeArrayOop result = new_charArray(length, CHECK_NULL);
43 result = typeArrayOop(oopDesc::bs()->resolve_and_maybe_copy_oop(result));
44 if (length > 0) {
45 UTF8::convert_to_unicode(utf8_str, result->char_at_addr(0), length);
46 }
47 return result;
48 }
49
50 typeArrayOop oopFactory::new_tenured_charArray(int length, TRAPS) {
51 return TypeArrayKlass::cast(Universe::charArrayKlassObj())->allocate(length, THREAD);
52 }
53
54 typeArrayOop oopFactory::new_typeArray(BasicType type, int length, TRAPS) {
55 Klass* type_asKlassOop = Universe::typeArrayKlassObj(type);
56 TypeArrayKlass* type_asArrayKlass = TypeArrayKlass::cast(type_asKlassOop);
57 typeArrayOop result = type_asArrayKlass->allocate(length, THREAD);
58 return result;
59 }
60
61 // Create a Java array that points to metadata.
62 // As far as Java code is concerned, a metaData array is either an array of
63 // int or long depending on pointer size. Only a few things use this, like
|