blob: 927b53302b7e9fca950e47bd6e9862bbb4073231 [file] [log] [blame]
Chang Xing605fe242017-07-20 15:57:21 -07001/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef ART_RUNTIME_AOT_CLASS_LINKER_H_
18#define ART_RUNTIME_AOT_CLASS_LINKER_H_
19
20#include "class_linker.h"
21
22namespace art {
23// AotClassLinker is only used for AOT compiler, which includes some logic for class initialization
24// which will only be used in pre-compilation.
25class AotClassLinker : public ClassLinker {
26 public:
27 explicit AotClassLinker(InternTable *intern_table);
28 ~AotClassLinker();
29
Mathieu Chartier0b1c3412017-07-14 18:23:25 -070030 protected:
31 // Overridden version of PerformClassVerification allows skipping verification if the class was
32 // previously verified but unloaded.
33 verifier::FailureKind PerformClassVerification(Thread* self,
34 Handle<mirror::Class> klass,
35 verifier::HardFailLogMode log_level,
36 std::string* error_msg)
37 OVERRIDE
38 REQUIRES_SHARED(Locks::mutator_lock_);
39
Chang Xing605fe242017-07-20 15:57:21 -070040 bool InitializeClass(Thread *self,
41 Handle<mirror::Class> klass,
42 bool can_run_clinit,
43 bool can_init_parents)
44 OVERRIDE
45 REQUIRES_SHARED(Locks::mutator_lock_)
46 REQUIRES(!Locks::dex_lock_);
47};
48} // namespace art
49
50#endif // ART_RUNTIME_AOT_CLASS_LINKER_H_