xref: /aosp_15_r20/art/runtime/arch/quick_field_entrypoints.S (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1/*
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
114