blob: 0bea80340d7326dd3f2a6103cd7203193f5bba09 [file] [log] [blame]
Vladimir Marko4716b512023-10-24 11:57:00 +02001/*
2 * Copyright (C) 2023 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// Note: Functions `art{Get,Set}<Kind>{Static,Instance}FromCompiledCode` are
18// defined with a macro in runtime/entrypoints/quick/quick_field_entrypoints.cc.
19
20.macro GENERATE_STATIC_FIELD_GETTERS
21ONE_ARG_DOWNCALL art_quick_get_boolean_static, \
22 artGetBooleanStaticFromCompiledCode, \
23 RETURN_OR_DEOPT_OR_DELIVER_PENDING_EXCEPTION
24ONE_ARG_DOWNCALL art_quick_get_byte_static, \
25 artGetByteStaticFromCompiledCode, \
26 RETURN_OR_DEOPT_OR_DELIVER_PENDING_EXCEPTION
27ONE_ARG_DOWNCALL art_quick_get_char_static, \
28 artGetCharStaticFromCompiledCode, \
29 RETURN_OR_DEOPT_OR_DELIVER_PENDING_EXCEPTION
30ONE_ARG_DOWNCALL art_quick_get_short_static, \
31 artGetShortStaticFromCompiledCode, \
32 RETURN_OR_DEOPT_OR_DELIVER_PENDING_EXCEPTION
33ONE_ARG_DOWNCALL art_quick_get32_static, \
34 artGet32StaticFromCompiledCode, \
35 RETURN_OR_DEOPT_OR_DELIVER_PENDING_EXCEPTION
36ONE_ARG_DOWNCALL art_quick_get_obj_static, \
37 artGetObjStaticFromCompiledCode, \
38 RETURN_REF_OR_DEOPT_OR_DELIVER_PENDING_EXCEPTION
39ONE_ARG_DOWNCALL art_quick_get64_static, \
40 artGet64StaticFromCompiledCode, \
41 RETURN_OR_DEOPT_OR_DELIVER_PENDING_EXCEPTION
42.endm
43
44.macro GENERATE_INSTANCE_FIELD_GETTERS
45TWO_ARG_DOWNCALL art_quick_get_boolean_instance, \
46 artGetBooleanInstanceFromCompiledCode, \
47 RETURN_OR_DEOPT_OR_DELIVER_PENDING_EXCEPTION
48TWO_ARG_DOWNCALL art_quick_get_byte_instance, \
49 artGetByteInstanceFromCompiledCode, \
50 RETURN_OR_DEOPT_OR_DELIVER_PENDING_EXCEPTION
51TWO_ARG_DOWNCALL art_quick_get_char_instance, \
52 artGetCharInstanceFromCompiledCode, \
53 RETURN_OR_DEOPT_OR_DELIVER_PENDING_EXCEPTION
54TWO_ARG_DOWNCALL art_quick_get_short_instance, \
55 artGetShortInstanceFromCompiledCode, \
56 RETURN_OR_DEOPT_OR_DELIVER_PENDING_EXCEPTION
57TWO_ARG_DOWNCALL art_quick_get32_instance, \
58 artGet32InstanceFromCompiledCode, \
59 RETURN_OR_DEOPT_OR_DELIVER_PENDING_EXCEPTION
60TWO_ARG_DOWNCALL art_quick_get_obj_instance, \
61 artGetObjInstanceFromCompiledCode, \
62 RETURN_REF_OR_DEOPT_OR_DELIVER_PENDING_EXCEPTION
63TWO_ARG_DOWNCALL art_quick_get64_instance, \
64 artGet64InstanceFromCompiledCode, \
65 RETURN_OR_DEOPT_OR_DELIVER_PENDING_EXCEPTION
66.endm
67
68.macro GENERATE_STATIC_FIELD_SETTERS emit64 = 1
69TWO_ARG_DOWNCALL art_quick_set8_static, \
70 artSet8StaticFromCompiledCode, \
71 RETURN_OR_DEOPT_IF_INT_RESULT_IS_ZERO_OR_DELIVER
72TWO_ARG_DOWNCALL art_quick_set16_static, \
73 artSet16StaticFromCompiledCode, \
74 RETURN_OR_DEOPT_IF_INT_RESULT_IS_ZERO_OR_DELIVER
75TWO_ARG_DOWNCALL art_quick_set32_static, \
76 artSet32StaticFromCompiledCode, \
77 RETURN_OR_DEOPT_IF_INT_RESULT_IS_ZERO_OR_DELIVER
78TWO_ARG_DOWNCALL art_quick_set_obj_static, \
79 artSetObjStaticFromCompiledCode, \
80 RETURN_OR_DEOPT_IF_INT_RESULT_IS_ZERO_OR_DELIVER
81.if \emit64
82TWO_ARG_DOWNCALL art_quick_set64_static, \
83 artSet64StaticFromCompiledCode, \
84 RETURN_OR_DEOPT_IF_INT_RESULT_IS_ZERO_OR_DELIVER
85.endif
86.endm
87
88.macro GENERATE_INSTANCE_FIELD_SETTERS emit64 = 1
89THREE_ARG_DOWNCALL art_quick_set8_instance, \
90 artSet8InstanceFromCompiledCode, \
91 RETURN_OR_DEOPT_IF_INT_RESULT_IS_ZERO_OR_DELIVER
92THREE_ARG_DOWNCALL art_quick_set16_instance, \
93 artSet16InstanceFromCompiledCode, \
94 RETURN_OR_DEOPT_IF_INT_RESULT_IS_ZERO_OR_DELIVER
95THREE_ARG_DOWNCALL art_quick_set32_instance, \
96 artSet32InstanceFromCompiledCode, \
97 RETURN_OR_DEOPT_IF_INT_RESULT_IS_ZERO_OR_DELIVER
98THREE_ARG_DOWNCALL art_quick_set_obj_instance, \
99 artSetObjInstanceFromCompiledCode, \
100 RETURN_OR_DEOPT_IF_INT_RESULT_IS_ZERO_OR_DELIVER
101.if \emit64
102THREE_ARG_DOWNCALL art_quick_set64_instance, \
103 artSet64InstanceFromCompiledCode, \
104 RETURN_OR_DEOPT_IF_INT_RESULT_IS_ZERO_OR_DELIVER
105.endif
106.endm
107
108.macro GENERATE_FIELD_ENTRYPOINTS
109 GENERATE_STATIC_FIELD_GETTERS
110 GENERATE_INSTANCE_FIELD_GETTERS
111 GENERATE_STATIC_FIELD_SETTERS
112 GENERATE_INSTANCE_FIELD_SETTERS
113.endm