blob: dfbba29952784187d52c31fa8862aaff1cc389c3 [file] [log] [blame]
buzbee1452bee2015-03-06 14:43:04 -08001/*
2 * Copyright (C) 2016 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_INTERPRETER_MTERP_MTERP_H_
18#define ART_RUNTIME_INTERPRETER_MTERP_MTERP_H_
19
Andreas Gampe8cf9cb32017-07-19 09:28:38 -070020#include <cstddef>
21#include <cstdint>
22
buzbee1452bee2015-03-06 14:43:04 -080023/*
24 * Mterp assembly handler bases
25 */
26extern "C" void* artMterpAsmInstructionStart[];
27extern "C" void* artMterpAsmInstructionEnd[];
buzbee1452bee2015-03-06 14:43:04 -080028
Nicolas Geoffray013d1ee2019-12-04 16:18:15 +000029extern "C" void* artNterpAsmInstructionStart[];
30extern "C" void* artNterpAsmInstructionEnd[];
31
buzbee1452bee2015-03-06 14:43:04 -080032namespace art {
Andreas Gampe8cf9cb32017-07-19 09:28:38 -070033
34class Thread;
35
buzbee1452bee2015-03-06 14:43:04 -080036namespace interpreter {
37
38void InitMterpTls(Thread* self);
39void CheckMterpAsmConstants();
Nicolas Geoffray013d1ee2019-12-04 16:18:15 +000040void CheckNterpAsmConstants();
David Srbecky28f6cff2018-10-16 15:07:28 +010041bool CanUseMterp();
Nicolas Geoffray013d1ee2019-12-04 16:18:15 +000042bool IsNterpSupported();
43const void* GetNterpEntryPoint();
buzbee1452bee2015-03-06 14:43:04 -080044
Bill Buzbeed47fd902016-07-07 14:42:43 +000045// Poison value for TestExportPC. If we segfault with this value, it means that a mterp
46// handler for a recent opcode failed to export the Dalvik PC prior to a possible exit from
47// the mterp environment.
48constexpr uintptr_t kExportPCPoison = 0xdead00ff;
David Srbeckye81f10a2019-07-04 10:00:12 +000049// Set true to enable poison testing of ExportPC. Uses Alt interpreter.
50constexpr bool kTestExportPC = false;
Bill Buzbeed47fd902016-07-07 14:42:43 +000051
David Srbeckyd88f5f72018-10-16 14:22:33 +010052constexpr size_t kMterpHandlerSize = 128;
53
buzbee1452bee2015-03-06 14:43:04 -080054} // namespace interpreter
55} // namespace art
56
57#endif // ART_RUNTIME_INTERPRETER_MTERP_MTERP_H_