blob: af52758bbc1b90d13eb59585537702a1c0b1671a [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
29namespace art {
Andreas Gampe8cf9cb32017-07-19 09:28:38 -070030
31class Thread;
32
buzbee1452bee2015-03-06 14:43:04 -080033namespace interpreter {
34
35void InitMterpTls(Thread* self);
36void CheckMterpAsmConstants();
David Srbecky28f6cff2018-10-16 15:07:28 +010037bool CanUseMterp();
buzbee1452bee2015-03-06 14:43:04 -080038
Bill Buzbeed47fd902016-07-07 14:42:43 +000039// Poison value for TestExportPC. If we segfault with this value, it means that a mterp
40// handler for a recent opcode failed to export the Dalvik PC prior to a possible exit from
41// the mterp environment.
42constexpr uintptr_t kExportPCPoison = 0xdead00ff;
David Srbeckye81f10a2019-07-04 10:00:12 +000043// Set true to enable poison testing of ExportPC. Uses Alt interpreter.
44constexpr bool kTestExportPC = false;
Bill Buzbeed47fd902016-07-07 14:42:43 +000045
David Srbeckyd88f5f72018-10-16 14:22:33 +010046constexpr size_t kMterpHandlerSize = 128;
47
buzbee1452bee2015-03-06 14:43:04 -080048} // namespace interpreter
49} // namespace art
50
51#endif // ART_RUNTIME_INTERPRETER_MTERP_MTERP_H_