// Copyright (C) 2018 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //
// Special env version that allows JVMTI-like access on userdebug builds. static constexpr jint kArtTiVersion = JVMTI_VERSION_1_2 | 0x40000000;
#define CHECK_CALL_SUCCESS(c) \ do { \ auto vc = (c); \
CHECK(vc == JNI_OK || vc == JVMTI_ERROR_NONE) << "call " << #c << " did not succeed\n"; \
} while (false)
static jthread GetJitThread() {
art::ScopedObjectAccess soa(art::Thread::Current()); auto* jit = art::Runtime::Current()->GetJit(); if (jit == nullptr) { return nullptr;
} auto* thread_pool = jit->GetThreadPool(); if (thread_pool == nullptr) { return nullptr;
} // Currently we only have a single jit thread so we only look at that one. return soa.AddLocalReference<jthread>(
thread_pool->GetWorkers()[0]->GetThread()->GetPeerFromOtherThread());
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.