annotate src/share/vm/shark/sharkContext.cpp @ 5763:a3d71693e0ce

removed bytecode disassembly from CodeCacheRuntime into separate BytecodeDisassembler class removed VM call for doing bytecode disassembly added support for explicitly excluding classes from JaCoCo (put '// JaCoCo Exclude' somewhere in the source file) added node intrinsics to MaterializeNode added snippets for the UnsignedMath classes each file opened by CFGPrinter now includes a unique id in its name to avoid a race of multiple threads writing to the same file the IdealGraphPrinter uses the new BytecodeDisassembler mechanism teh UnsignedMath class is exclude from JaCoCo processing as it is used in snippets
author Doug Simon <doug.simon@oracle.com>
date Wed, 04 Jul 2012 21:57:49 +0200
parents f95d63e2154a
children da91efe96a93
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1692
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
1 /*
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1692
diff changeset
2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
1692
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
3 * Copyright 2009, 2010 Red Hat, Inc.
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
5 *
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
6 * This code is free software; you can redistribute it and/or modify it
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
7 * under the terms of the GNU General Public License version 2 only, as
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
8 * published by the Free Software Foundation.
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
9 *
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
10 * This code is distributed in the hope that it will be useful, but WITHOUT
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
13 * version 2 for more details (a copy is included in the LICENSE file that
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
14 * accompanied this code).
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
15 *
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License version
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
17 * 2 along with this work; if not, write to the Free Software Foundation,
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
19 *
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
21 * or visit www.oracle.com if you need additional information or have any
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
22 * questions.
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
23 *
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
24 */
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
25
1972
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1692
diff changeset
26 #include "precompiled.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1692
diff changeset
27 #include "oops/arrayOop.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1692
diff changeset
28 #include "oops/oop.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1692
diff changeset
29 #include "shark/llvmHeaders.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1692
diff changeset
30 #include "shark/sharkContext.hpp"
f95d63e2154a 6989984: Use standard include model for Hospot
stefank
parents: 1692
diff changeset
31 #include "utilities/globalDefinitions.hpp"
1692
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
32
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
33 using namespace llvm;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
34
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
35 SharkContext::SharkContext(const char* name)
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
36 : LLVMContext(),
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
37 _free_queue(NULL) {
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
38 // Create a module to build our functions into
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
39 _module = new Module(name, *this);
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
40
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
41 // Create basic types
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
42 _void_type = Type::getVoidTy(*this);
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
43 _bit_type = Type::getInt1Ty(*this);
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
44 _jbyte_type = Type::getInt8Ty(*this);
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
45 _jshort_type = Type::getInt16Ty(*this);
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
46 _jint_type = Type::getInt32Ty(*this);
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
47 _jlong_type = Type::getInt64Ty(*this);
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
48 _jfloat_type = Type::getFloatTy(*this);
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
49 _jdouble_type = Type::getDoubleTy(*this);
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
50
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
51 // Create compound types
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
52 _itableOffsetEntry_type = PointerType::getUnqual(
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
53 ArrayType::get(jbyte_type(), itableOffsetEntry::size() * wordSize));
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
54
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
55 _klass_type = PointerType::getUnqual(
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
56 ArrayType::get(jbyte_type(), sizeof(Klass)));
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
57
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
58 _jniEnv_type = PointerType::getUnqual(
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
59 ArrayType::get(jbyte_type(), sizeof(JNIEnv)));
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
60
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
61 _jniHandleBlock_type = PointerType::getUnqual(
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
62 ArrayType::get(jbyte_type(), sizeof(JNIHandleBlock)));
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
63
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
64 _methodOop_type = PointerType::getUnqual(
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
65 ArrayType::get(jbyte_type(), sizeof(methodOopDesc)));
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
66
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
67 _monitor_type = ArrayType::get(
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
68 jbyte_type(), frame::interpreter_frame_monitor_size() * wordSize);
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
69
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
70 _oop_type = PointerType::getUnqual(
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
71 ArrayType::get(jbyte_type(), sizeof(oopDesc)));
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
72
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
73 _thread_type = PointerType::getUnqual(
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
74 ArrayType::get(jbyte_type(), sizeof(JavaThread)));
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
75
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
76 _zeroStack_type = PointerType::getUnqual(
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
77 ArrayType::get(jbyte_type(), sizeof(ZeroStack)));
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
78
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
79 std::vector<const Type*> params;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
80 params.push_back(methodOop_type());
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
81 params.push_back(intptr_type());
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
82 params.push_back(thread_type());
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
83 _entry_point_type = FunctionType::get(jint_type(), params, false);
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
84
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
85 params.clear();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
86 params.push_back(methodOop_type());
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
87 params.push_back(PointerType::getUnqual(jbyte_type()));
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
88 params.push_back(intptr_type());
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
89 params.push_back(thread_type());
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
90 _osr_entry_point_type = FunctionType::get(jint_type(), params, false);
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
91
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
92 // Create mappings
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
93 for (int i = 0; i < T_CONFLICT; i++) {
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
94 switch (i) {
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
95 case T_BOOLEAN:
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
96 _to_stackType[i] = jint_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
97 _to_arrayType[i] = jbyte_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
98 break;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
99
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
100 case T_BYTE:
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
101 _to_stackType[i] = jint_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
102 _to_arrayType[i] = jbyte_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
103 break;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
104
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
105 case T_CHAR:
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
106 _to_stackType[i] = jint_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
107 _to_arrayType[i] = jshort_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
108 break;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
109
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
110 case T_SHORT:
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
111 _to_stackType[i] = jint_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
112 _to_arrayType[i] = jshort_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
113 break;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
114
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
115 case T_INT:
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
116 _to_stackType[i] = jint_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
117 _to_arrayType[i] = jint_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
118 break;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
119
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
120 case T_LONG:
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
121 _to_stackType[i] = jlong_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
122 _to_arrayType[i] = jlong_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
123 break;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
124
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
125 case T_FLOAT:
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
126 _to_stackType[i] = jfloat_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
127 _to_arrayType[i] = jfloat_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
128 break;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
129
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
130 case T_DOUBLE:
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
131 _to_stackType[i] = jdouble_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
132 _to_arrayType[i] = jdouble_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
133 break;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
134
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
135 case T_OBJECT:
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
136 case T_ARRAY:
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
137 _to_stackType[i] = oop_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
138 _to_arrayType[i] = oop_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
139 break;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
140
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
141 case T_ADDRESS:
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
142 _to_stackType[i] = intptr_type();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
143 _to_arrayType[i] = NULL;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
144 break;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
145
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
146 default:
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
147 _to_stackType[i] = NULL;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
148 _to_arrayType[i] = NULL;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
149 }
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
150 }
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
151 }
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
152
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
153 class SharkFreeQueueItem : public CHeapObj {
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
154 public:
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
155 SharkFreeQueueItem(llvm::Function* function, SharkFreeQueueItem *next)
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
156 : _function(function), _next(next) {}
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
157
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
158 private:
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
159 llvm::Function* _function;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
160 SharkFreeQueueItem* _next;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
161
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
162 public:
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
163 llvm::Function* function() const {
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
164 return _function;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
165 }
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
166 SharkFreeQueueItem* next() const {
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
167 return _next;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
168 }
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
169 };
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
170
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
171 void SharkContext::push_to_free_queue(Function* function) {
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
172 _free_queue = new SharkFreeQueueItem(function, _free_queue);
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
173 }
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
174
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
175 Function* SharkContext::pop_from_free_queue() {
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
176 if (_free_queue == NULL)
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
177 return NULL;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
178
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
179 SharkFreeQueueItem *item = _free_queue;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
180 Function *function = item->function();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
181 _free_queue = item->next();
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
182 delete item;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
183 return function;
d2ede61b7a12 6976186: integrate Shark HotSpot changes
twisti
parents:
diff changeset
184 }