1126 {
1130 {
1132 StackZone stack_zone(thread);
1133 Zone* zone = stack_zone.GetZone();
1136 QueueElement* element = nullptr;
1137 {
1138 SafepointMonitorLocker ml(&monitor_);
1142 }
1143 }
1144 if (element != nullptr) {
1145 delete element;
1148
1149
1150
1152 FLAG_stress_test_background_compilation) {
1154 SafepointMonitorLocker ml(&monitor_);
1155 if (running_) {
1156 QueueElement* repeat_qelem =
new QueueElement(
function);
1158 }
1159 }
1160 }
1161 }
1162 }
1164 {
1165 MonitorLocker ml(&monitor_);
1168
1169 } else {
1170
1171
1172
1173 running_ = false;
1174 done_ = true;
1175 ml.NotifyAll();
1176 }
1177 }
1178}
static bool CanOptimizeFunction(Thread *thread, const Function &function)
static constexpr intptr_t kNoOSRDeoptId
static ObjectPtr CompileOptimizedFunction(Thread *thread, const Function &function, intptr_t osr_id=kNoOSRDeoptId)
ObjectPtr function() const
static void ExitIsolateGroupAsHelper(bool bypass_safepoint)
static bool EnterIsolateGroupAsHelper(IsolateGroup *isolate_group, TaskKind kind, bool bypass_safepoint)
#define HANDLESCOPE(thread)