Mercurial > hg > graal-jvmci-8
comparison src/os/solaris/vm/thread_solaris.inline.hpp @ 23660:b5f3a471e646
Merge.
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Wed, 01 Jun 2016 00:11:44 +0200 |
parents | ca3c6538bcec 3ad3f93fe3d2 |
children |
comparison
equal
deleted
inserted
replaced
23411:d7cf78885a3a | 23660:b5f3a471e646 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 2002, 2015, 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. |
38 // ThreadLocalStorage::thread is warm -- it's called > 16K times in the same | 38 // ThreadLocalStorage::thread is warm -- it's called > 16K times in the same |
39 // period. Thread::current() now calls ThreadLocalStorage::thread() directly. | 39 // period. Thread::current() now calls ThreadLocalStorage::thread() directly. |
40 // For SPARC, to avoid excessive register window spill-fill faults, | 40 // For SPARC, to avoid excessive register window spill-fill faults, |
41 // we aggressively inline these routines. | 41 // we aggressively inline these routines. |
42 | 42 |
43 inline void ThreadLocalStorage::set_thread(Thread* thread) { | |
44 _thr_current = thread; | |
45 } | |
46 | |
43 inline Thread* ThreadLocalStorage::thread() { | 47 inline Thread* ThreadLocalStorage::thread() { |
44 // don't use specialized code if +UseMallocOnly -- may confuse Purify et al. | 48 return _thr_current; |
45 debug_only(if (UseMallocOnly) return get_thread_slow();); | |
46 | |
47 uintptr_t raw = pd_raw_thread_id(); | |
48 int ix = pd_cache_index(raw); | |
49 Thread* candidate = ThreadLocalStorage::_get_thread_cache[ix]; | |
50 if (candidate != NULL && candidate->self_raw_id() == raw) { | |
51 // hit | |
52 return candidate; | |
53 } else { | |
54 return ThreadLocalStorage::get_thread_via_cache_slowly(raw, ix); | |
55 } | |
56 } | 49 } |
57 | 50 |
58 #endif // OS_SOLARIS_VM_THREAD_SOLARIS_INLINE_HPP | 51 #endif // OS_SOLARIS_VM_THREAD_SOLARIS_INLINE_HPP |