quick_compiler_callbacks.h revision 6449c62e40ef3a9bb75f664f922555affb532ee4
16449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom/* 26449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * Copyright (C) 2011 The Android Open Source Project 36449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * 46449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * Licensed under the Apache License, Version 2.0 (the "License"); 56449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * you may not use this file except in compliance with the License. 66449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * You may obtain a copy of the License at 76449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * 86449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * http://www.apache.org/licenses/LICENSE-2.0 96449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * 106449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * Unless required by applicable law or agreed to in writing, software 116449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * distributed under the License is distributed on an "AS IS" BASIS, 126449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * See the License for the specific language governing permissions and 146449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom * limitations under the License. 156449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom */ 166449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 176449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#ifndef ART_COMPILER_DRIVER_COMPILER_CALLBACKS_IMPL_H_ 186449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#define ART_COMPILER_DRIVER_COMPILER_CALLBACKS_IMPL_H_ 196449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 206449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#include "compiler_callbacks.h" 216449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#include "dex/quick/dex_file_to_method_inliner_map.h" 226449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#include "verifier/method_verifier-inl.h" 236449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 246449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstromnamespace art { 256449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 266449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstromclass CompilerCallbacksImpl : public CompilerCallbacks { 276449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom public: 286449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom CompilerCallbacksImpl(VerificationResults* verification_results, 296449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom DexFileToMethodInlinerMap* method_inliner_map) 306449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom : verification_results_(verification_results), 316449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom method_inliner_map_(method_inliner_map) { 326449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom CHECK(verification_results != nullptr); 336449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom CHECK(method_inliner_map != nullptr); 346449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom } 356449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 366449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom virtual ~CompilerCallbacksImpl() { } 376449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 386449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom virtual bool MethodVerified(verifier::MethodVerifier* verifier) 396449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) { 406449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom bool result = verification_results_->ProcessVerifiedMethod(verifier); 416449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom if (result) { 426449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom MethodReference ref = verifier->GetMethodReference(); 436449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom method_inliner_map_->GetMethodInliner(ref.dex_file) 446449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom ->AnalyseMethodCode(verifier); 456449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom } 466449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom return result; 476449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom } 486449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom virtual void ClassRejected(ClassReference ref) { 496449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom verification_results_->AddRejectedClass(ref); 506449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom } 516449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 526449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom private: 536449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom VerificationResults* verification_results_; 546449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom DexFileToMethodInlinerMap* method_inliner_map_; 556449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom}; 566449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 576449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom} // namespace art 586449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom 596449c62e40ef3a9bb75f664f922555affb532ee4Brian Carlstrom#endif // ART_COMPILER_DRIVER_COMPILER_CALLBACKS_IMPL_H_ 60