comparison src/share/vm/classfile/javaClasses.cpp @ 23802:efe013052465

8059677: Thread.getName() instantiates Strings Reviewed-by: coleenp, dholmes, sla
author shade
date Tue, 02 Feb 2016 11:44:20 +0300
parents 7d8724b3c156
children f13e777eb255
comparison
equal deleted inserted replaced
23801:dae1435f96b7 23802:efe013052465
1 /* 1 /*
2 * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
934 934
935 void java_lang_Thread::compute_offsets() { 935 void java_lang_Thread::compute_offsets() {
936 assert(_group_offset == 0, "offsets should be initialized only once"); 936 assert(_group_offset == 0, "offsets should be initialized only once");
937 937
938 Klass* k = SystemDictionary::Thread_klass(); 938 Klass* k = SystemDictionary::Thread_klass();
939 compute_offset(_name_offset, k, vmSymbols::name_name(), vmSymbols::char_array_signature()); 939 compute_offset(_name_offset, k, vmSymbols::name_name(), vmSymbols::string_signature());
940 compute_offset(_group_offset, k, vmSymbols::group_name(), vmSymbols::threadgroup_signature()); 940 compute_offset(_group_offset, k, vmSymbols::group_name(), vmSymbols::threadgroup_signature());
941 compute_offset(_contextClassLoader_offset, k, vmSymbols::contextClassLoader_name(), vmSymbols::classloader_signature()); 941 compute_offset(_contextClassLoader_offset, k, vmSymbols::contextClassLoader_name(), vmSymbols::classloader_signature());
942 compute_offset(_inheritedAccessControlContext_offset, k, vmSymbols::inheritedAccessControlContext_name(), vmSymbols::accesscontrolcontext_signature()); 942 compute_offset(_inheritedAccessControlContext_offset, k, vmSymbols::inheritedAccessControlContext_name(), vmSymbols::accesscontrolcontext_signature());
943 compute_offset(_priority_offset, k, vmSymbols::priority_name(), vmSymbols::int_signature()); 943 compute_offset(_priority_offset, k, vmSymbols::priority_name(), vmSymbols::int_signature());
944 compute_offset(_daemon_offset, k, vmSymbols::daemon_name(), vmSymbols::bool_signature()); 944 compute_offset(_daemon_offset, k, vmSymbols::daemon_name(), vmSymbols::bool_signature());
964 void java_lang_Thread::set_thread(oop java_thread, JavaThread* thread) { 964 void java_lang_Thread::set_thread(oop java_thread, JavaThread* thread) {
965 java_thread->address_field_put(_eetop_offset, (address)thread); 965 java_thread->address_field_put(_eetop_offset, (address)thread);
966 } 966 }
967 967
968 968
969 typeArrayOop java_lang_Thread::name(oop java_thread) { 969 oop java_lang_Thread::name(oop java_thread) {
970 oop name = java_thread->obj_field(_name_offset); 970 return java_thread->obj_field(_name_offset);
971 assert(name == NULL || (name->is_typeArray() && TypeArrayKlass::cast(name->klass())->element_type() == T_CHAR), "just checking"); 971 }
972 return typeArrayOop(name); 972
973 } 973
974 974 void java_lang_Thread::set_name(oop java_thread, oop name) {
975
976 void java_lang_Thread::set_name(oop java_thread, typeArrayOop name) {
977 assert(java_thread->obj_field(_name_offset) == NULL, "name should be NULL");
978 java_thread->obj_field_put(_name_offset, name); 975 java_thread->obj_field_put(_name_offset, name);
979 } 976 }
980 977
981 978
982 ThreadPriority java_lang_Thread::priority(oop java_thread) { 979 ThreadPriority java_lang_Thread::priority(oop java_thread) {