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