1e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao/*
2e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao * Copyright (C) 2012 The Android Open Source Project
3e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao *
4e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao * Licensed under the Apache License, Version 2.0 (the "License");
5e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao * you may not use this file except in compliance with the License.
6e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao * You may obtain a copy of the License at
7e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao *
8e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao *      http://www.apache.org/licenses/LICENSE-2.0
9e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao *
10e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao * Unless required by applicable law or agreed to in writing, software
11e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao * distributed under the License is distributed on an "AS IS" BASIS,
12e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao * See the License for the specific language governing permissions and
14e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao * limitations under the License.
15e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao */
16e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
17e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// DEF_INTRINSICS_FUNC(ID, NAME, ATTR, RET_TYPE,
18e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//                     ARG1_TYPE, ARG2_TYPE, ARG3_TYPE, ARG4_TYPE, ARG5_TYPE)
19e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#ifndef DEF_INTRINSICS_FUNC
20e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#  error "missing DEF_INTRINSICS_FUNC definition!"
21e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#endif
22e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
23e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _EVAL_DEF_INTRINSICS_FUNC(ID, NAME, ATTR, RET_TYPE, ...) \
24e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao    DEF_INTRINSICS_FUNC(ID, NAME, ATTR, RET_TYPE, __VA_ARGS__)
25e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
26e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _EXPAND_ARG0()                         kNone, kNone, kNone, kNone, kNone
27e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _EXPAND_ARG1(ARG1)                      ARG1, kNone, kNone, kNone, kNone
28e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _EXPAND_ARG2(ARG1, ARG2)                ARG1,  ARG2, kNone, kNone, kNone
29e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _EXPAND_ARG3(ARG1, ARG2, ARG3)          ARG1,  ARG2,  ARG3, kNone, kNone
30e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _EXPAND_ARG4(ARG1, ARG2, ARG3, ARG4)    ARG1,  ARG2,  ARG3,  ARG4, kNone
31e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _EXPAND_ARG5(ARG1, ARG2, ARG3, ARG4, ARG5) \
32e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                                                ARG1,  ARG2,  ARG3,  ARG4,  ARG5
33e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
34e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _JTYPE(TYPE, SPACE) _JTYPE_OF_ ## TYPE ## _UNDER_ ## SPACE
35e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
36e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// Note: These should be consistent with the type return from
37e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// IRBuilder::GetJType([type], kArray).
38e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _JTYPE_OF_kInt1Ty_UNDER_kArray        kInt8Ty
39e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _JTYPE_OF_kInt8Ty_UNDER_kArray        kInt8Ty
40e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _JTYPE_OF_kInt16Ty_UNDER_kArray       kInt16Ty
41e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _JTYPE_OF_kInt32Ty_UNDER_kArray       kInt32Ty
42e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _JTYPE_OF_kInt64Ty_UNDER_kArray       kInt64Ty
43e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _JTYPE_OF_kJavaObjectTy_UNDER_kArray  kJavaObjectTy
44e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
45e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// Note: These should be consistent with the type return from
46e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// IRBuilder::GetJType([type], kField).
47e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _JTYPE_OF_kInt1Ty_UNDER_kField        kInt32Ty
48e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _JTYPE_OF_kInt8Ty_UNDER_kField        kInt32Ty
49e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _JTYPE_OF_kInt16Ty_UNDER_kField       kInt32Ty
50e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _JTYPE_OF_kInt32Ty_UNDER_kField       kInt32Ty
51e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _JTYPE_OF_kInt64Ty_UNDER_kField       kInt64Ty
52e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#define _JTYPE_OF_kJavaObjectTy_UNDER_kField  kJavaObjectTy
53e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
54e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
55e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// Thread
56e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
57e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
5876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// Thread* art_portable_get_current_thread()
59e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(GetCurrentThread,
6076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_get_current_thread,
6121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadNone | kAttrNoThrow,
6221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kJavaThreadTy,
6321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG0())
6421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
6576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_test_suspend(Thread* thread)
6621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(TestSuspend,
6776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_test_suspend,
6821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNoThrow,
6921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
7021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG1(kJavaThreadTy))
7121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
7276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_check_suspend() /* Expands to GetCurrentThread/TestSuspend */
7321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(CheckSuspend,
7476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_check_suspend,
7521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNoThrow,
7621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
77e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG0())
78e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
7976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_mark_gc_card(Object* new_value, Object* object)
8021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(MarkGCCard,
8176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_mark_gc_card,
8221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNoThrow,
8321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
8421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG2(kJavaObjectTy, kJavaObjectTy))
8521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
86e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
87e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// Exception
88e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
89e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
90c9f40dd0a3dba696fc694d51fb82b61dcff19066Bill Buzbee// Should not expand - introduces the catch targets for a potentially
91c9f40dd0a3dba696fc694d51fb82b61dcff19066Bill Buzbee// throwing instruction.  The result is a switch key and this
92c9f40dd0a3dba696fc694d51fb82b61dcff19066Bill Buzbee// instruction will be followed by a switch statement.  The catch
93c9f40dd0a3dba696fc694d51fb82b61dcff19066Bill Buzbee// targets will be enumerated as cases of the switch, with the fallthrough
94c9f40dd0a3dba696fc694d51fb82b61dcff19066Bill Buzbee// designating the block containing the potentially throwing instruction.
9576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// bool art_portable_catch_targets(int dex_pc)
96c9f40dd0a3dba696fc694d51fb82b61dcff19066Bill Buzbee_EVAL_DEF_INTRINSICS_FUNC(CatchTargets,
9776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_catch_targets,
98c9f40dd0a3dba696fc694d51fb82b61dcff19066Bill Buzbee                          kAttrReadOnly | kAttrNoThrow,
99c9f40dd0a3dba696fc694d51fb82b61dcff19066Bill Buzbee                          kInt32Ty,
100c9f40dd0a3dba696fc694d51fb82b61dcff19066Bill Buzbee                          _EXPAND_ARG1(kInt32ConstantTy))
101c9f40dd0a3dba696fc694d51fb82b61dcff19066Bill Buzbee
10276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_throw_exception(JavaObject* exception)
10321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ThrowException,
10476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_throw_exception,
10521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrDoThrow,
10621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
107f71bf5ad4e1872e4dfc71de65641ed518e2b38daTDYa                          _EXPAND_ARG1(kJavaObjectTy))
108f71bf5ad4e1872e4dfc71de65641ed518e2b38daTDYa
10976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_hl_throw_exception(JavaObject* exception)
110f71bf5ad4e1872e4dfc71de65641ed518e2b38daTDYa_EVAL_DEF_INTRINSICS_FUNC(HLThrowException,
11176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_throw_exception,
112f71bf5ad4e1872e4dfc71de65641ed518e2b38daTDYa                          kAttrDoThrow,
113f71bf5ad4e1872e4dfc71de65641ed518e2b38daTDYa                          kVoidTy,
11421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG1(kJavaObjectTy))
11521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
11676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_get_current_exception()
117e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(GetException,
11876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_get_current_exception,
119e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
120c9f40dd0a3dba696fc694d51fb82b61dcff19066Bill Buzbee                          kJavaObjectTy,
121e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG0())
122e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
12376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// bool art_portable_is_exception_pending()
124e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(IsExceptionPending,
12576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_is_exception_pending,
126e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
127e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kInt1Ty,
128e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG0())
129e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
13076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// int art_portable_find_catch_block(Method* method, int try_item_offset)
131e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(FindCatchBlock,
13276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_find_catch_block,
133e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
134e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kInt32Ty,
135e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kJavaMethodTy, kInt32ConstantTy))
136e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
13776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_throw_div_zero()
138e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ThrowDivZeroException,
13976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_throw_div_zero,
14021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrDoThrow,
141e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
142e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG0())
143e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
14476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_throw_null_pointer_exception(uint32_t dex_pc)
145e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ThrowNullPointerException,
14676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_throw_null_pointer_exception,
14721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrDoThrow,
148e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
149e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG1(kInt32ConstantTy))
150e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
15176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_throw_array_bounds(int index, int array_len)
152e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ThrowIndexOutOfBounds,
15376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_throw_array_bounds,
15421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrDoThrow,
155e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
156e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kInt32Ty, kInt32Ty))
157e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
158e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
159e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// ConstString
160e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
161e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
16276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_const_string(uint32_t string_idx)
163e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ConstString,
16476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_const_string,
165e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
166e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kJavaObjectTy,
167e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG1(kInt32ConstantTy))
168e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
16976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_load_string_from_dex_cache(Method* method, uint32_t string_idx)
17021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(LoadStringFromDexCache,
17176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_load_string_from_dex_cache,
172e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
173e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kJavaObjectTy,
174e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG1(kInt32ConstantTy))
175e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
17676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_resolve_string(Method* method, uint32_t string_idx)
17721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ResolveString,
17876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_resolve_string,
17921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
18021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kJavaObjectTy,
18121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG2(kJavaMethodTy, kInt32ConstantTy))
18221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
183e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
184101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee// ConstClass
185101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee//----------------------------------------------------------------------------
18621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
18776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_const_class(uint32_t type_idx)
188101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(ConstClass,
18976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_const_class,
190101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrReadOnly | kAttrNoThrow,
191101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kJavaObjectTy,
192101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG1(kInt32ConstantTy))
193101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
19476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_initialize_type_and_verify_access(uint32_t type_idx,
19521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                        Method* referrer,
19621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                        Thread* thread)
19721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InitializeTypeAndVerifyAccess,
19876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_initialize_type_and_verify_access,
19921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
20021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kJavaObjectTy,
20121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, kJavaThreadTy))
20221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
20376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_load_type_from_dex_cache(uint32_t type_idx)
20421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(LoadTypeFromDexCache,
20576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_load_type_from_dex_cache,
20621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
20721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kJavaObjectTy,
20821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG1(kInt32ConstantTy))
20921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
21076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_initialize_type(uint32_t type_idx,
21121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                      Method* referrer,
21221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                      Thread* thread)
21321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InitializeType,
21476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_initialize_type,
21521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
21621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kJavaObjectTy,
21721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, kJavaThreadTy))
21821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
21921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//----------------------------------------------------------------------------
22021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao// Lock
22121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//----------------------------------------------------------------------------
22221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
22376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_lock_object(JavaObject* obj, Thread* thread)
22421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(LockObject,
22576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_lock_object,
22621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNoThrow,
22721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
22821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG2(kJavaObjectTy, kJavaThreadTy))
22921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
23076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_unlock_object(JavaObject* obj, Thread* thread)
23121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(UnlockObject,
23276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_unlock_object,
23321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
23421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
23521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG2(kJavaObjectTy, kJavaThreadTy))
23621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
237101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee//----------------------------------------------------------------------------
23821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao// Cast
239101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee//----------------------------------------------------------------------------
24021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
24176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_check_cast(JavaObject* dest_type, JavaObject* src_type)
242101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(CheckCast,
24376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_check_cast,
24421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
24521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
24621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG2(kJavaObjectTy, kJavaObjectTy))
24721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
24876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_hl_check_cast(uint32_t type_idx, JavaObject* obj)
24921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(HLCheckCast,
25076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_check_cast,
251101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrReadOnly | kAttrNoThrow,
252101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kVoidTy,
253101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG2(kInt32ConstantTy, kJavaObjectTy))
254101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
25576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// int art_portable_is_assignable(JavaObject* dest_type, JavaObject* src_type)
25621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(IsAssignable,
25776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_is_assignable,
25821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
25921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kInt32Ty,
26021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG2(kJavaObjectTy, kJavaObjectTy))
26121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
26221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//----------------------------------------------------------------------------
26321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao// Allocation
26421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//----------------------------------------------------------------------------
26521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
26676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_alloc_object(uint32_t type_idx,
26721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                   Method* referrer,
26821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                   Thread* thread)
26921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(AllocObject,
27076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_alloc_object,
27121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
27221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kJavaObjectTy,
27321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, kJavaThreadTy))
27421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
27576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_alloc_object_with_access_check(uint32_t type_idx,
27621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                     Method* referrer,
27721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                     Thread* thread)
27821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(AllocObjectWithAccessCheck,
27976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_alloc_object_with_access_check,
28021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
28121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kJavaObjectTy,
28221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, kJavaThreadTy))
28321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
284101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee//----------------------------------------------------------------------------
2858fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// Instance
2864f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee//----------------------------------------------------------------------------
2874f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee
28876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_new_instance(uint32_t type_idx)
2894f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee_EVAL_DEF_INTRINSICS_FUNC(NewInstance,
29076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_new_instance,
2914f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee                          kAttrNone,
2924f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee                          kJavaObjectTy,
2934f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee                          _EXPAND_ARG1(kInt32Ty))
2944f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee
29576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// bool art_portable_instance_of(uint32_t type_idx, JavaObject* ref)
2968fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(InstanceOf,
29776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_instance_of,
2988fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrNone,
2994f4dfc7ce0d309448d6fc47737c1f3c0a9eda7e5buzbee                          kInt32Ty,
3008fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG2(kInt32Ty, kJavaObjectTy))
3018fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
3024f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee//----------------------------------------------------------------------------
303e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// Array
304e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
305e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
30676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_new_array(uint32_t type_idx, uint32_t array_size)
307e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(NewArray,
30876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_new_array,
309e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNone,
310e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kJavaObjectTy,
311e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kInt32ConstantTy, kInt32Ty))
312e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
31376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// uint32_t art_portable_opt_array_length(int32_t opt_flags, JavaObject* array)
31421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(OptArrayLength,
31576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_opt_array_length,
31621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
31721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kInt32Ty,
31821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG2(kInt32Ty, kJavaObjectTy))
31921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
32076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// uint32_t art_portable_array_length(JavaObject* array)
32121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ArrayLength,
32276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_array_length,
32321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
32421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kInt32Ty,
32521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG1(kJavaObjectTy))
32621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
32776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_alloc_array(uint32_t type_idx,
32821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                  Method* referrer,
32921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                  uint32_t length,
33021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                  Thread* thread)
33121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(AllocArray,
33276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_alloc_array,
333101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrNone,
33421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kJavaObjectTy,
33521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaMethodTy, kInt32Ty, kJavaThreadTy))
33621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
33776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_alloc_array_with_access_check(uint32_t type_idx,
33821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                    Method* referrer,
33921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                    uint32_t length,
34021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                    Thread* thread)
34121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(AllocArrayWithAccessCheck,
34276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_alloc_array_with_access_check,
34321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
34421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kJavaObjectTy,
34521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaMethodTy, kInt32Ty, kJavaThreadTy))
34621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
34776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_check_and_alloc_array(uint32_t type_idx,
34821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                            Method* referrer,
34921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                            uint32_t length,
35021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                            Thread* thread)
35121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(CheckAndAllocArray,
35276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_check_and_alloc_array,
35321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
35421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kJavaObjectTy,
35521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaMethodTy, kInt32ConstantTy, kJavaThreadTy))
35621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
35776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_check_and_alloc_array_with_access_check(uint32_t type_idx,
35821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                              Method* referrer,
35921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                              uint32_t length,
36021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                              Thread* thread)
36121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(CheckAndAllocArrayWithAccessCheck,
36276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_check_and_alloc_array_with_access_check,
36321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
36421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kJavaObjectTy,
36521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaMethodTy, kInt32ConstantTy, kJavaThreadTy))
366101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
36776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// art_portable_aget_* and art_portable_aput_* never generate exception since the
368e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// necessary checking on arguments (e.g., array and index) has already done
369e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// before invocation of these intrinsics.
370e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//
37176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// [type] void art_portable_aget_[type](JavaObject* array, uint32_t index)
372e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ArrayGet,
37376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_aget,
374e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
375e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt32Ty, kArray),
376e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kJavaObjectTy, kInt32Ty))
377e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
378e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ArrayGetWide,
37976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_aget_wide,
380e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
381e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt64Ty, kArray),
382e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kJavaObjectTy, kInt32Ty))
383e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
384e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ArrayGetObject,
38576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_aget_object,
386e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
387e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kJavaObjectTy, kArray),
388e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kJavaObjectTy, kInt32Ty))
389e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
390e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ArrayGetBoolean,
39176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_aget_boolean,
392e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
393e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt1Ty, kArray),
394e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kJavaObjectTy, kInt32Ty))
395e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
396e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ArrayGetByte,
39776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_aget_byte,
398e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
399e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt8Ty, kArray),
400e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kJavaObjectTy, kInt32Ty))
401e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
402e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ArrayGetChar,
40376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_aget_char,
404e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
405e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt16Ty, kArray),
406e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kJavaObjectTy, kInt32Ty))
407e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
408e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ArrayGetShort,
40976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_aget_short,
410e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
411e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt16Ty, kArray),
412e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kJavaObjectTy, kInt32Ty))
413e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
41476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_aput_[type]([type] value, JavaObject* array, uint32_t index)
415e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ArrayPut,
41676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_aput,
417e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
418e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
419e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(_JTYPE(kInt32Ty, kArray), kJavaObjectTy, kInt32Ty))
420e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
421e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ArrayPutWide,
42276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_aput_wide,
423e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
424e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
425e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(_JTYPE(kInt64Ty, kArray), kJavaObjectTy, kInt32Ty))
426e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
427e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ArrayPutObject,
42876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_aput_object,
429e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
430e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
431e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(_JTYPE(kJavaObjectTy, kArray), kJavaObjectTy, kInt32Ty))
432e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
433e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ArrayPutBoolean,
43476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_aput_boolean,
435e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
436e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
437e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(_JTYPE(kInt1Ty, kArray), kJavaObjectTy, kInt32Ty))
438e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
439e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ArrayPutByte,
44076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_aput_byte,
441e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
442e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
443e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(_JTYPE(kInt8Ty, kArray), kJavaObjectTy, kInt32Ty))
444e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
445e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ArrayPutChar,
44676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_aput_char,
447e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
448e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
449e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(_JTYPE(kInt16Ty, kArray), kJavaObjectTy, kInt32Ty))
450e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
451e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(ArrayPutShort,
45276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_aput_short,
453e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
454e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
455e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(_JTYPE(kInt16Ty, kArray), kJavaObjectTy, kInt32Ty))
456e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
45776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_check_put_array_element(JavaObject* value, JavaObject* array)
458e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(CheckPutArrayElement,
45976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_check_put_array_element,
46021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
461e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
462e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kJavaObjectTy, kJavaObjectTy))
463e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
46476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_filled_new_array(Array* array,
46521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                uint32_t elem_jty, ...)
46621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(FilledNewArray,
46776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_filled_new_array,
46821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNoThrow,
46921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
47021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kJavaObjectTy, kInt32ConstantTy, kVarArgTy))
47121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
47276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_fill_array_data(Method* referrer,
47321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                               uint32_t dex_pc,
47421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                               Array* array,
47521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                               uint32_t payload_offset)
47621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(FillArrayData,
47776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_fill_array_data,
47821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
47921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
48021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kJavaMethodTy, kInt32ConstantTy, kJavaObjectTy, kInt32ConstantTy))
48121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
48276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_hl_fill_array_data(int32_t offset, JavaObject* array)
48321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(HLFillArrayData,
48476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_fill_array_data,
48521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
48621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
48721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG2(kInt32ConstantTy, kJavaObjectTy))
48821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
48921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//----------------------------------------------------------------------------
49021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao// Instance Field
49121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//----------------------------------------------------------------------------
49221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
49376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// [type] art_portable_iget_[type](uint32_t field_idx,
49421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                             Method* referrer,
49521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                             JavaObject* obj)
49621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldGet,
49776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iget,
49821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
49921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _JTYPE(kInt32Ty, kField),
50021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, kJavaObjectTy))
50121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
50221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldGetWide,
50376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iget_wide,
50421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
50521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _JTYPE(kInt64Ty, kField),
50621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, kJavaObjectTy))
50721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
50821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldGetObject,
50976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iget_object,
51021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
51121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _JTYPE(kJavaObjectTy, kField),
51221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, kJavaObjectTy))
51321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
51421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldGetBoolean,
51576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iget_boolean,
51621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
51721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _JTYPE(kInt1Ty, kField),
51821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, kJavaObjectTy))
51921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
52021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldGetByte,
52176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iget_byte,
52221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
52321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _JTYPE(kInt8Ty, kField),
52421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, kJavaObjectTy))
52521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
52621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldGetChar,
52776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iget_char,
52821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
52921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _JTYPE(kInt16Ty, kField),
53021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, kJavaObjectTy))
53121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
53221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldGetShort,
53376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iget_short,
53421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
53521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _JTYPE(kInt16Ty, kField),
53621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, kJavaObjectTy))
53721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
53876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// [type] art_portable_iget_[type].fast(int field_offset,
53921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                  bool is_volatile,
54021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                  JavaObject* obj)
54121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldGetFast,
54276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iget.fast,
54321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
54421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _JTYPE(kInt32Ty, kField),
54521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kInt1ConstantTy, kJavaObjectTy))
54621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
54721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldGetWideFast,
54876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iget_wide.fast,
54921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
55021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _JTYPE(kInt64Ty, kField),
55121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kInt1ConstantTy, kJavaObjectTy))
55221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
55321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldGetObjectFast,
55476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iget_object.fast,
55521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
55621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _JTYPE(kJavaObjectTy, kField),
55721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kInt1ConstantTy, kJavaObjectTy))
55821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
55921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldGetBooleanFast,
56076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iget_boolean.fast,
56121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
56221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _JTYPE(kInt1Ty, kField),
56321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kInt1ConstantTy, kJavaObjectTy))
56421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
56521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldGetByteFast,
56676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iget_byte.fast,
56721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
56821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _JTYPE(kInt8Ty, kField),
56921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kInt1ConstantTy, kJavaObjectTy))
57021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
57121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldGetCharFast,
57276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iget_char.fast,
57321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
57421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _JTYPE(kInt16Ty, kField),
57521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kInt1ConstantTy, kJavaObjectTy))
57621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
57721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldGetShortFast,
57876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iget_short.fast,
57921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
58021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _JTYPE(kInt16Ty, kField),
58121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kInt1ConstantTy, kJavaObjectTy))
58221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
58376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_iput_[type](uint32_t field_idx,
58421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                           Method* referrer,
58521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                           JavaObject* obj,
58621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                           [type] new_value)
58721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldPut,
58876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iput,
58921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
59021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
59121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaMethodTy, kJavaObjectTy, _JTYPE(kInt32Ty, kField)))
59221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
59321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldPutWide,
59476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iput_wide,
59521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
59621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
59721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaMethodTy, kJavaObjectTy, _JTYPE(kInt64Ty, kField)))
59821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
59921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldPutObject,
60076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iput_object,
60121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
60221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
60321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaMethodTy, kJavaObjectTy, _JTYPE(kJavaObjectTy, kField)))
60421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
60521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldPutBoolean,
60676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iput_boolean,
60721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
60821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
60921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaMethodTy, kJavaObjectTy, _JTYPE(kInt1Ty, kField)))
61021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
61121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldPutByte,
61276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iput_byte,
61321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
61421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
61521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaMethodTy, kJavaObjectTy, _JTYPE(kInt8Ty, kField)))
61621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
61721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldPutChar,
61876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iput_char,
61921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
62021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
62121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaMethodTy, kJavaObjectTy, _JTYPE(kInt16Ty, kField)))
62221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
62321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldPutShort,
62476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iput_short,
62521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
62621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
62721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaMethodTy, kJavaObjectTy, _JTYPE(kInt16Ty, kField)))
62821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
62976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_iput_[type].fast(int field_offset,
63021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                bool is_volatile,
63121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                JavaObject* obj,
63221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                [type] new_value)
63321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldPutFast,
63476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iput.fast,
63521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNoThrow,
63621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
63721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kInt1ConstantTy, kJavaObjectTy, _JTYPE(kInt32Ty, kField)))
63821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
63921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldPutWideFast,
64076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iput_wide.fast,
64121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNoThrow,
64221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
64321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kInt1ConstantTy, kJavaObjectTy, _JTYPE(kInt64Ty, kField)))
64421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
64521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldPutObjectFast,
64676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iput_object.fast,
64721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNoThrow,
64821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
64921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kInt1ConstantTy, kJavaObjectTy, _JTYPE(kJavaObjectTy, kField)))
65021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
65121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldPutBooleanFast,
65276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iput_boolean.fast,
65321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNoThrow,
65421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
65521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kInt1ConstantTy, kJavaObjectTy, _JTYPE(kInt1Ty, kField)))
65621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
65721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldPutByteFast,
65876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iput_byte.fast,
65921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNoThrow,
66021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
66121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kInt1ConstantTy, kJavaObjectTy, _JTYPE(kInt8Ty, kField)))
66221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
66321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldPutCharFast,
66476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iput_char.fast,
66521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNoThrow,
66621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
66721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kInt1ConstantTy, kJavaObjectTy, _JTYPE(kInt16Ty, kField)))
66821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
66921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InstanceFieldPutShortFast,
67076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_iput_short.fast,
67121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNoThrow,
67221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kVoidTy,
67321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kInt1ConstantTy, kJavaObjectTy, _JTYPE(kInt16Ty, kField)))
67421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
675e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
676e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// Static Field
677e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
678e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
67976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// [type] art_portable_sget_[type](uint32_t field_idx, Method* referrer)
680e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldGet,
68176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sget,
68221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
683e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt32Ty, kField),
684e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kInt32ConstantTy, kJavaMethodTy))
685e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
686e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldGetWide,
68776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sget_wide,
68821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
689e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt64Ty, kField),
690e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kInt32ConstantTy, kJavaMethodTy))
691e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
692e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldGetObject,
69376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sget_object,
69421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
695e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kJavaObjectTy, kField),
696e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kInt32ConstantTy, kJavaMethodTy))
697e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
698e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldGetBoolean,
69976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sget_boolean,
70021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
701e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt1Ty, kField),
702e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kInt32ConstantTy, kJavaMethodTy))
703e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
704e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldGetByte,
70576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sget_byte,
70621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
707e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt8Ty, kField),
708e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kInt32ConstantTy, kJavaMethodTy))
709e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
710e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldGetChar,
71176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sget_char,
71221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
713e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt16Ty, kField),
714e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kInt32ConstantTy, kJavaMethodTy))
715e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
716e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldGetShort,
71776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sget_short,
71821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
719e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt16Ty, kField),
720e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kInt32ConstantTy, kJavaMethodTy))
721e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
72276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// [type] art_portable_sget_[type].fast(JavaObject* ssb,
723e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//                                  int field_offset,
724e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//                                  bool is_volatile)
725e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldGetFast,
72676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sget.fast,
727e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
728e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt32Ty, kField),
729e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(kJavaObjectTy, kInt32ConstantTy, kInt1ConstantTy))
730e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
731e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldGetWideFast,
73276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sget_wide.fast,
733e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
734e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt64Ty, kField),
735e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(kJavaObjectTy, kInt32ConstantTy, kInt1ConstantTy))
736e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
737e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldGetObjectFast,
73876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sget_object.fast,
739e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
740e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kJavaObjectTy, kField),
741e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(kJavaObjectTy, kInt32ConstantTy, kInt1ConstantTy))
742e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
743e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldGetBooleanFast,
74476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sget_boolean.fast,
745e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
746e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt1Ty, kField),
747e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(kJavaObjectTy, kInt32ConstantTy, kInt1ConstantTy))
748e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
749e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldGetByteFast,
75076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sget_byte.fast,
751e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
752e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt8Ty, kField),
753e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(kJavaObjectTy, kInt32ConstantTy, kInt1ConstantTy))
754e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
755e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldGetCharFast,
75676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sget_char.fast,
757e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
758e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt16Ty, kField),
759e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(kJavaObjectTy, kInt32ConstantTy, kInt1ConstantTy))
760e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
761e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldGetShortFast,
76276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sget_short.fast,
763e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
764e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _JTYPE(kInt16Ty, kField),
765e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(kJavaObjectTy, kInt32ConstantTy, kInt1ConstantTy))
766e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
76776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_sput_[type](uint32_t field_idx,
768e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//                           Method* referrer,
769e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//                           [type] new_value)
770e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldPut,
77176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sput,
772e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNone,
773e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
774e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, _JTYPE(kInt32Ty, kField)))
775e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
776e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldPutWide,
77776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sput_wide,
778e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNone,
779e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
780e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, _JTYPE(kInt64Ty, kField)))
781e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
782e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldPutObject,
78376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sput_object,
784e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNone,
785e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
786e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, _JTYPE(kJavaObjectTy, kField)))
787e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
788e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldPutBoolean,
78976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sput_boolean,
790e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNone,
791e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
792e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, _JTYPE(kInt1Ty, kField)))
793e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
794e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldPutByte,
79576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sput_byte,
796e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNone,
797e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
798e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, _JTYPE(kInt8Ty, kField)))
799e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
800e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldPutChar,
80176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sput_char,
802e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNone,
803e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
804e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, _JTYPE(kInt16Ty, kField)))
805e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
806e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldPutShort,
80776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sput_short,
808e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNone,
809e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
810e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, _JTYPE(kInt16Ty, kField)))
811e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
81276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_sput_[type].fast(JavaObject* ssb,
813e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//                                int field_offset,
814e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//                                bool is_volatile,
815e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//                                [type] new_value)
816e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldPutFast,
81776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sput.fast,
818e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
819e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
820e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG4(kJavaObjectTy, kInt32ConstantTy, kInt1ConstantTy, _JTYPE(kInt32Ty, kField)))
821e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
822e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldPutWideFast,
82376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sput_wide.fast,
824e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
825e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
826e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG4(kJavaObjectTy, kInt32ConstantTy, kInt1ConstantTy, _JTYPE(kInt64Ty, kField)))
827e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
828e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldPutObjectFast,
82976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sput_object.fast,
830e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
831e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
832e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG4(kJavaObjectTy, kInt32ConstantTy, kInt1ConstantTy, _JTYPE(kJavaObjectTy, kField)))
833e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
834e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldPutBooleanFast,
83576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sput_boolean.fast,
836e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
837e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
838e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG4(kJavaObjectTy, kInt32ConstantTy, kInt1ConstantTy, _JTYPE(kInt1Ty, kField)))
839e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
840e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldPutByteFast,
84176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sput_byte.fast,
842e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
843e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
844e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG4(kJavaObjectTy, kInt32ConstantTy, kInt1ConstantTy, _JTYPE(kInt8Ty, kField)))
845e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
846e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldPutCharFast,
84776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sput_char.fast,
848e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
849e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
850e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG4(kJavaObjectTy, kInt32ConstantTy, kInt1ConstantTy, _JTYPE(kInt16Ty, kField)))
851e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
852e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(StaticFieldPutShortFast,
85376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_sput_short.fast,
854e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
855e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
856e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG4(kJavaObjectTy, kInt32ConstantTy, kInt1ConstantTy, _JTYPE(kInt16Ty, kField)))
857e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
85876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_load_declaring_class_ssb(Method* method)
859e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// Load the static storage base of the class that given method resides
860e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(LoadDeclaringClassSSB,
86176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_load_declaring_class_ssb,
862e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
863e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kJavaObjectTy,
864e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG1(kJavaMethodTy))
865e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
86676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_load_class_ssb_from_dex_cache(uint32_t type_idx)
867e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(LoadClassSSBFromDexCache,
86876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_load_class_ssb_from_dex_cache,
869e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
870e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kJavaObjectTy,
871e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG1(kInt32ConstantTy))
872e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
87376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// JavaObject* art_portable_init_and_load_class_ssb(uint32_t type_idx,
874e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//                                              Method* referrer,
875e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//                                              Thread* thread)
876e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InitializeAndLoadClassSSB,
87776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_init_and_load_class_ssb,
878e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNone,
879e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kJavaObjectTy,
880e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG3(kInt32ConstantTy, kJavaMethodTy, kJavaThreadTy))
881e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
882e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
8838fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// High-level Array get/put
8848fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee//
88576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// Similar to art_portable_aget/aput_xxx, but checks not yet performed.
8868fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// OptFlags contain info describing whether frontend has determined that
8878fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// null check and/or array bounds check may be skipped.
8888fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee//
88976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// [type] void art_portable_hl_aget_[type](int optFlags, JavaObject* array, uint32_t index)
8908fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayGet,
89176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aget,
8928fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
8938fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kInt32Ty,
8948fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
8958fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
8968fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayGetFloat,
89776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aget_float,
8988fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
8998fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kFloatTy,
9008fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
9018fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9028fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayGetWide,
90376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aget_wide,
9048fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
9058fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kInt64Ty,
9068fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
9078fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9088fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayGetDouble,
90976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aget_double,
9108fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
9118fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kDoubleTy,
9128fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
9138fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9148fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayGetObject,
91576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aget_object,
9168fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
9178fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kJavaObjectTy,
9188fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
9198fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9208fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayGetBoolean,
92176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aget_boolean,
9228fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
92376592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
9248fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
9258fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9268fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayGetByte,
92776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aget_byte,
9288fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
92976592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
9308fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
9318fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9328fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayGetChar,
93376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aget_char,
9348fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
93576592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
9368fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
9378fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9388fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayGetShort,
93976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aget_short,
9408fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
94176592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
9428fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
9438fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
94476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_aput_[type](int optFlags, [type] value, JavaObject* array, uint32_t index)
9458fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayPut,
94676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aput,
9478fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrNoThrow,
9488fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
9498fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG4(kInt32Ty, kInt32Ty, kJavaObjectTy, kInt32Ty))
9508fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9518fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayPutFloat,
95276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aput_float,
9538fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrNoThrow,
9548fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
9558fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG4(kInt32Ty, kFloatTy, kJavaObjectTy, kInt32Ty))
9568fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9578fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayPutWide,
95876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aput_wide,
9598fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrNoThrow,
9608fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
9618fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG4(kInt32Ty, kInt64Ty, kJavaObjectTy, kInt32Ty))
9628fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9638fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayPutDouble,
96476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aput_double,
9658fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrNoThrow,
9668fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
9678fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG4(kInt32Ty, kDoubleTy, kJavaObjectTy, kInt32Ty))
9688fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9698fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayPutObject,
97076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aput_object,
9718fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrNoThrow,
9728fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
9738fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG4(kInt32Ty, kJavaObjectTy, kJavaObjectTy, kInt32Ty))
9748fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9758fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayPutBoolean,
97676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aput_boolean,
9778fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrNoThrow,
9788fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
97976592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG4(kInt32Ty, kInt32Ty, kJavaObjectTy, kInt32Ty))
9808fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9818fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayPutByte,
98276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aput_byte,
9838fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrNoThrow,
9848fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
98576592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG4(kInt32Ty, kInt32Ty, kJavaObjectTy, kInt32Ty))
9868fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9878fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayPutChar,
98876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aput_char,
9898fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrNoThrow,
9908fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
99176592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG4(kInt32Ty, kInt32Ty, kJavaObjectTy, kInt32Ty))
9928fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9938fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLArrayPutShort,
99476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_aput_short,
9958fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrNoThrow,
9968fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
99776592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG4(kInt32Ty, kInt32Ty, kJavaObjectTy, kInt32Ty))
9988fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
9998fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee//----------------------------------------------------------------------------
1000101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee// High-level Instance get/put
1001101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee//
100276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// Similar to art_portable_iget/iput_xxx, but checks not yet performed.
1003101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee// OptFlags contain info describing whether frontend has determined that
1004101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee// null check may be skipped.
1005101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee//
100676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// [type] void art_portable_hl_iget_[type](int optFlags, JavaObject* obj, uint32_t field_idx)
1007101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIGet,
100876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iget,
1009101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrReadOnly | kAttrNoThrow,
1010101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kInt32Ty,
1011101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
1012101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1013101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIGetFloat,
101476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iget_float,
1015101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrReadOnly | kAttrNoThrow,
1016101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kFloatTy,
1017101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
1018101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1019101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIGetWide,
102076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iget_wide,
1021101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrReadOnly | kAttrNoThrow,
1022101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kInt64Ty,
1023101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
1024101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1025101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIGetDouble,
102676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iget_double,
1027101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrReadOnly | kAttrNoThrow,
1028101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kDoubleTy,
1029101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
1030101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1031101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIGetObject,
103276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iget_object,
1033101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrReadOnly | kAttrNoThrow,
1034101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kJavaObjectTy,
1035101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
1036101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1037101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIGetBoolean,
103876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iget_boolean,
1039101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrReadOnly | kAttrNoThrow,
104076592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
1041101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
1042101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1043101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIGetByte,
104476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iget_byte,
1045101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrReadOnly | kAttrNoThrow,
104676592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
1047101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
1048101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1049101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIGetChar,
105076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iget_char,
1051101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrReadOnly | kAttrNoThrow,
105276592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
1053101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
1054101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1055101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIGetShort,
105676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iget_short,
1057101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrReadOnly | kAttrNoThrow,
105876592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
1059101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG3(kInt32Ty, kJavaObjectTy, kInt32Ty))
1060101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
106176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_iput_[type](int optFlags, [type] value, JavaObject* obj, uint32_t field_idx)
1062101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIPut,
106376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iput,
1064101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrNoThrow,
1065101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kVoidTy,
1066101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG4(kInt32Ty, kInt32Ty, kJavaObjectTy, kInt32Ty))
1067101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1068101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIPutFloat,
106976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iput_float,
1070101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrNoThrow,
1071101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kVoidTy,
1072101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG4(kInt32Ty, kFloatTy, kJavaObjectTy, kInt32Ty))
1073101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1074101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIPutWide,
107576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iput_wide,
1076101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrNoThrow,
1077101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kVoidTy,
1078101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG4(kInt32Ty, kInt64Ty, kJavaObjectTy, kInt32Ty))
1079101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1080101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIPutDouble,
108176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iput_double,
1082101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrNoThrow,
1083101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kVoidTy,
1084101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG4(kInt32Ty, kDoubleTy, kJavaObjectTy, kInt32Ty))
1085101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1086101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIPutObject,
108776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iput_object,
1088101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrNoThrow,
1089101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kVoidTy,
1090101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG4(kInt32Ty, kJavaObjectTy, kJavaObjectTy, kInt32Ty))
1091101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1092101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIPutBoolean,
109376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iput_boolean,
1094101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrNoThrow,
1095101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kVoidTy,
109676592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG4(kInt32Ty, kInt32Ty, kJavaObjectTy, kInt32Ty))
1097101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1098101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIPutByte,
109976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iput_byte,
1100101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrNoThrow,
1101101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kVoidTy,
110276592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG4(kInt32Ty, kInt32Ty, kJavaObjectTy, kInt32Ty))
1103101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1104101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIPutChar,
110576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iput_char,
1106101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrNoThrow,
1107101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kVoidTy,
110876592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG4(kInt32Ty, kInt32Ty, kJavaObjectTy, kInt32Ty))
1109101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1110101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(HLIPutShort,
111176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_iput_short,
1112101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrNoThrow,
1113101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kVoidTy,
111476592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG4(kInt32Ty, kInt32Ty, kJavaObjectTy, kInt32Ty))
1115101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1116101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee//----------------------------------------------------------------------------
11176969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee// High-level Invokes (fast-path determination not yet performed)
11186969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee//
11196969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee// NOTE: We expect these intrinsics to be temporary.  Once calling conventions are
11206969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee//       fully merged, the unified front end will lower down to the
11216969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee//       InvokeRetxxx() intrinsics in the next section and these will be
11226969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee//       removed.
11236969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee//
1124101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee// arg0: InvokeType [ignored if FilledNewArray]
1125101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee// arg1: method_idx [ignored if FilledNewArray]
11266969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee// arg2: optimization_flags (primary to note whether null checking is needed)
11276969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee// [arg3..argN]: actual arguments
11286969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee//----------------------------------------------------------------------------
11296969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee// INVOKE method returns void
11306969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee_EVAL_DEF_INTRINSICS_FUNC(HLInvokeVoid,
113176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_invoke.void,
11326969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          kAttrNone,
11336969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          kVoidTy,
11346969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          _EXPAND_ARG1(kVarArgTy))
11356969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee
11366969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee// INVOKE method returns object
11376969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee_EVAL_DEF_INTRINSICS_FUNC(HLInvokeObj,
113876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_invoke.obj,
11396969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          kAttrNone,
11406969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          kJavaObjectTy,
11416969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          _EXPAND_ARG1(kVarArgTy))
11426969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee
11436969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee// INVOKE method returns int
11446969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee_EVAL_DEF_INTRINSICS_FUNC(HLInvokeInt,
114576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_invoke.i32,
11466969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          kAttrNone,
11476969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          kInt32Ty,
11486969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          _EXPAND_ARG1(kVarArgTy))
11496969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee
11506969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee// INVOKE method returns float
11516969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee_EVAL_DEF_INTRINSICS_FUNC(HLInvokeFloat,
115276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_invoke.f32,
11536969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          kAttrNone,
11546969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          kFloatTy,
11556969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          _EXPAND_ARG1(kVarArgTy))
11566969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee
11576969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee// INVOKE method returns long
11586969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee_EVAL_DEF_INTRINSICS_FUNC(HLInvokeLong,
115976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_invoke.i64,
11606969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          kAttrNone,
11616969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          kInt64Ty,
11626969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          _EXPAND_ARG1(kVarArgTy))
11636969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee
11646969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee// INVOKE method returns double
11656969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee_EVAL_DEF_INTRINSICS_FUNC(HLInvokeDouble,
116676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_invoke.f64,
11676969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          kAttrNone,
11686969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          kDoubleTy,
11696969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee                          _EXPAND_ARG1(kVarArgTy))
11706969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee
1171101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee// FILLED_NEW_ARRAY returns object
117221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(HLFilledNewArray,
117376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_filled_new_array,
1174101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrNone,
1175101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kJavaObjectTy,
1176101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG1(kVarArgTy))
1177101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
11786969d50c820bd63043940b0e0f0ddc6e6ac763b0buzbee//----------------------------------------------------------------------------
1179e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// Invoke
1180e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
1181e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
118276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// Method* art_portable_find_static_method_with_access_check(uint32_t method_idx,
118321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                       JavaObject* this,
118421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                       Method* referrer,
118521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                       Thread* thread)
118621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(FindStaticMethodWithAccessCheck,
118776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_find_static_method_with_access_check,
118821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
118921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kJavaMethodTy,
119021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaObjectTy, kJavaMethodTy, kJavaThreadTy))
119121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
119276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// Method* art_portable_find_direct_method_with_access_check(uint32_t method_idx,
119321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                       JavaObject* this,
119421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                       Method* referrer,
119521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                       Thread* thread)
119621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(FindDirectMethodWithAccessCheck,
119776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_find_direct_method_with_access_check,
119821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
119921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kJavaMethodTy,
120021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaObjectTy, kJavaMethodTy, kJavaThreadTy))
120121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
120276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// Method* art_portable_find_virtual_method_with_access_check(uint32_t method_idx,
120321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                        JavaObject* this,
120421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                        Method* referrer,
120521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                        Thread* thread)
120621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(FindVirtualMethodWithAccessCheck,
120776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_find_virtual_method_with_access_check,
120821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
120921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kJavaMethodTy,
121021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaObjectTy, kJavaMethodTy, kJavaThreadTy))
121121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
121276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// Method* art_portable_find_super_method_with_access_check(uint32_t method_idx,
121321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                      JavaObject* this,
121421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                      Method* referrer,
121521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                      Thread* thread)
121621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(FindSuperMethodWithAccessCheck,
121776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_find_super_method_with_access_check,
121821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
1219e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kJavaMethodTy,
122021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaObjectTy, kJavaMethodTy, kJavaThreadTy))
122121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
122276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// Method* art_portable_find_interface_method_with_access_check(uint32_t method_idx,
122321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                          JavaObject* this,
122421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                          Method* referrer,
122521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao//                                                          Thread* thread)
122621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(FindInterfaceMethodWithAccessCheck,
122776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_find_interface_method_with_access_check,
122821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
122921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kJavaMethodTy,
123021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaObjectTy, kJavaMethodTy, kJavaThreadTy))
1231e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
123276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// Method* art_portable_get_sd_callee_method_obj_addr(uint32_t method_idx)
1233e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(GetSDCalleeMethodObjAddrFast,
123476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_get_sd_callee_method_obj_addr_fast,
123521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
1236e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kJavaMethodTy,
1237e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG1(kInt32ConstantTy))
1238e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
123976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// Method* art_portable_get_virtual_callee_method_obj_addr(uint32_t vtable_idx,
1240e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//                                                     JavaObject* this)
1241e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(GetVirtualCalleeMethodObjAddrFast,
124276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_get_virtual_callee_method_obj_addr_fast,
1243e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrReadOnly | kAttrNoThrow,
1244e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kJavaMethodTy,
1245e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kInt32ConstantTy, kJavaObjectTy))
1246e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
124776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// Method* art_portable_get_interface_callee_method_obj_addr(uint32_t method_idx,
1248e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//                                                       JavaObject* this,
1249e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//                                                       Method* referrer,
1250e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//                                                       Thread* thread)
1251e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(GetInterfaceCalleeMethodObjAddrFast,
125276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_get_interface_callee_method_obj_addr_fast,
125321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
1254e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kJavaMethodTy,
1255e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG4(kInt32ConstantTy, kJavaObjectTy, kJavaMethodTy, kJavaThreadTy))
1256e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
125776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// [type] art_portable_invoke.[type](Method* callee, ...)
1258e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// INVOKE method returns void
1259e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InvokeRetVoid,
126076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_invoke.void,
1261e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNone,
1262e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
1263e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kJavaMethodTy, kVarArgTy))
1264e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
126521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao// INVOKE method returns the value of type boolean
126621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InvokeRetBoolean,
126776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_invoke.bool,
126821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
126921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kInt1Ty,
127021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG2(kJavaMethodTy, kVarArgTy))
127121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
127221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao// INVOKE method returns the value of type byte
127321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InvokeRetByte,
127476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_invoke.byte,
127521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
127621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kInt8Ty,
127721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG2(kJavaMethodTy, kVarArgTy))
127821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
127921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao// INVOKE method returns the value of type char
128021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InvokeRetChar,
128176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_invoke.char,
128221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
128321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kInt16Ty,
128421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG2(kJavaMethodTy, kVarArgTy))
128521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
128621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao// INVOKE method returns the value of type short
128721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InvokeRetShort,
128876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_invoke.short,
128921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
129021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kInt16Ty,
129121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG2(kJavaMethodTy, kVarArgTy))
129221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
129321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao// INVOKE method returns the value of type int
129421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InvokeRetInt,
129576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_invoke.int,
1296e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNone,
1297e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kInt32Ty,
1298e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kJavaMethodTy, kVarArgTy))
1299e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
130021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao// INVOKE method returns the value of type long
130121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InvokeRetLong,
130276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_invoke.long,
1303e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNone,
1304e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kInt64Ty,
1305e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kJavaMethodTy, kVarArgTy))
1306e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
130721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao// INVOKE method returns the value of type float
130821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InvokeRetFloat,
130976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_invoke.float,
131021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
131121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kFloatTy,
131221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG2(kJavaMethodTy, kVarArgTy))
131321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
131421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao// INVOKE method returns the value of type double
131521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InvokeRetDouble,
131676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_invoke.double,
131721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrNone,
131821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kDoubleTy,
131921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG2(kJavaMethodTy, kVarArgTy))
132021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
132121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao// INVOKE method returns the value of type "object"
1322e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(InvokeRetObject,
132376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_invoke.object,
1324e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNone,
1325e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kJavaObjectTy,
1326e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kJavaMethodTy, kVarArgTy))
1327e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
1328e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
1329e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// Math
1330e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
1331e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
133276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// int art_portable_{div,rem}_int(int a, int b)
1333e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(DivInt,
133476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_div_int,
133521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadNone | kAttrNoThrow,
1336e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kInt32Ty,
1337e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kInt32Ty, kInt32Ty))
1338e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
1339e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(RemInt,
134076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_rem_int,
134121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadNone | kAttrNoThrow,
1342e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kInt32Ty,
1343e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kInt32Ty, kInt32Ty))
1344e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
134576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// long art_portable_{div,rem}_long(long a, long b)
1346e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(DivLong,
134776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_div_long,
134821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadNone | kAttrNoThrow,
1349e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kInt64Ty,
1350e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kInt64Ty, kInt64Ty))
1351e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
1352e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(RemLong,
135376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_rem_long,
135421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadNone | kAttrNoThrow,
1355e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kInt64Ty,
1356e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG2(kInt64Ty, kInt64Ty))
1357e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
135876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// int64_t art_portable_d2l(double f)
135921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(D2L,
136076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_d2l,
136121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadNone | kAttrNoThrow,
136221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kInt64Ty,
136321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG1(kDoubleTy))
1364e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
136576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// int32_t art_portable_d2l(double f)
136621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(D2I,
136776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_d2i,
136821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadNone | kAttrNoThrow,
136921d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kInt32Ty,
137021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG1(kDoubleTy))
137121d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
137276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// int64_t art_portable_f2l(float f)
137321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(F2L,
137476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_f2l,
137521d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadNone | kAttrNoThrow,
137621d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kInt64Ty,
137721d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG1(kFloatTy))
137821d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao
137976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// int32_t art_portable_f2i(float f)
138021d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(F2I,
138176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_f2i,
138221d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kAttrReadNone | kAttrNoThrow,
138321d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          kInt32Ty,
138421d28f510eb590f52810c83f1f3f37fe5f4adf46Shih-wei Liao                          _EXPAND_ARG1(kFloatTy))
1385e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
13868fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee//----------------------------------------------------------------------------
13878fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// sput intrinsics to assist MIR to Greenland_ir conversion.
13888fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// "HL" versions - will be deprecated when fast/slow path handling done
13898fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// in the common frontend.
13908fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee//----------------------------------------------------------------------------
13918fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
13928fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// void sput_hl(int field_idx, int val)
13938fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSput,
139476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sput,
13958fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
13968fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
13978fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG2(kInt32Ty, kInt32Ty))
13988fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
13998fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// void sput_hl_object(int field_idx, object* val)
14008fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSputObject,
140176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sput_object,
14028fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
14038fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
14048fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG2(kInt32Ty, kJavaObjectTy))
14058fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
14068fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// void sput_hl_boolean(int field_idx, kInt1Ty)
14078fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSputBoolean,
140876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sput_boolean,
14098fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
14108fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
141176592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG2(kInt32Ty, kInt32Ty))
14128fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
14138fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// void sput_hl_byte(int field_idx, int val)
14148fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSputByte,
141576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sput_byte,
14168fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
14178fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
141876592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG2(kInt32Ty, kInt32Ty))
14198fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
14208fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// void sput_hl_char(int field_idx, kInt16Ty val)
14218fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSputChar,
142276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sput_char,
14238fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
14248fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
142576592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG2(kInt32Ty, kInt32Ty))
14268fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
14278fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// void sput_hl_short(int field_idx, int val)
14288fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSputShort,
142976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sput_short,
14308fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
14318fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
143276592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG2(kInt32Ty, kInt32Ty))
14338fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
14348fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// void sput_hl_wide(int field_idx, long val)
14358fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSputWide,
143676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sput_wide,
14378fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
14388fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
14398fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG2(kInt32Ty, kInt64Ty))
14408fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
14418fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// void sput_hl_double(int field_idx, double val)
14428fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSputDouble,
144376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sput_double,
14448fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
14458fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
14468fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG2(kInt32Ty, kDoubleTy))
14478fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
14488fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// void sput_hl_float(int field_idx, float val)
14498fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSputFloat,
145076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sput_float,
14518fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
14528fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
14538fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG2(kInt32Ty, kFloatTy))
14542cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee
1455e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
14564f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee// sget intrinsics to assist MIR to Greenland_ir conversion.
14578fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// "HL" versions - will be deprecated when fast/slow path handling done
14588fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// in the common frontend.
14594f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee//----------------------------------------------------------------------------
14604f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee
14618fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// int sget_hl(int field_idx)
14628fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSget,
146376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sget,
14648fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
14658fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kInt32Ty,
14668fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG1(kInt32Ty))
14678fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
14688fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// object* sget_hl_object(int field_idx)
14698fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSgetObject,
147076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sget_object,
14714f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee                          kAttrReadOnly | kAttrNoThrow,
14724f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee                          kJavaObjectTy,
14734f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee                          _EXPAND_ARG1(kInt32Ty))
14744f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee
14758fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// boolean sget_hl_boolean(int field_idx)
14768fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSgetBoolean,
147776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sget_boolean,
14788fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
147976592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
14808fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG1(kInt32Ty))
14818fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
14828fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// byte sget_hl_byte(int field_idx)
14838fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSgetByte,
148476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sget_byte,
14858fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
148676592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
14878fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG1(kInt32Ty))
14888fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
14898fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// char sget_hl_char(int field_idx)
14908fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSgetChar,
149176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sget_char,
14928fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
149376592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
14948fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG1(kInt32Ty))
14958fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
14968fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// char sget_hl_short(int field_idx)
14978fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSgetShort,
149876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sget_short,
14998fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
150076592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
15018fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG1(kInt32Ty))
15028fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
15038fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// char sget_hl_wide(int field_idx)
15048fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSgetWide,
150576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sget_wide,
15068fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
15078fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kInt64Ty,
15088fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG1(kInt32Ty))
15098fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
15108fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// char sget_hl_double(int field_idx)
15118fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSgetDouble,
151276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sget_double,
15138fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
15148fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kDoubleTy,
15158fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG1(kInt32Ty))
15168fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
15178fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// char sget_hl_float(int field_idx)
15188fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(HLSgetFloat,
151976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_hl_sget_float,
15208fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
15218fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kFloatTy,
15228fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          _EXPAND_ARG1(kInt32Ty))
15238fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee//----------------------------------------------------------------------------
15248fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee// Monitor enter/exit
15258fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee//----------------------------------------------------------------------------
152676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// uint32_t art_portable_monitor_enter(int optFlags, JavaObject* obj)
15278fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(MonitorEnter,
152876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_monitor_enter,
15298fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
15308fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
153176592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG2(kInt32Ty, kJavaObjectTy))
15328fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
153376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// uint32_t art_portable_monitor_exit(int optFlags, JavaObject* obj)
15348fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee_EVAL_DEF_INTRINSICS_FUNC(MonitorExit,
153576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_monitor_exit,
15368fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kAttrReadOnly | kAttrNoThrow,
15378fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee                          kVoidTy,
153876592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG2(kInt32Ty, kJavaObjectTy))
15398fa0fda8e1b6aa0a759990b3d32b78bb08065e0fbuzbee
15404f1181fe061d3529f72e1237e7662bf9bc73c6e2buzbee//----------------------------------------------------------------------------
1541e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// Shadow Frame
1542e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao//----------------------------------------------------------------------------
1543e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
154476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_alloca_shadow_frame(int num_entry)
1545e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(AllocaShadowFrame,
154676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_alloca_shadow_frame,
1547e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
1548e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
1549ce4cc0d1818e872c1c7f3c3519a82259afd5c288TDYa                          _EXPAND_ARG1(kInt32ConstantTy))
1550e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
155176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_set_vreg(int entry_idx, ...)
15528e950c117975d23f50ed7e32ca5db01a813c25d0TDYa_EVAL_DEF_INTRINSICS_FUNC(SetVReg,
155376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_set_vreg,
15548e950c117975d23f50ed7e32ca5db01a813c25d0TDYa                          kAttrNoThrow,
15558e950c117975d23f50ed7e32ca5db01a813c25d0TDYa                          kVoidTy,
15568e950c117975d23f50ed7e32ca5db01a813c25d0TDYa                          _EXPAND_ARG2(kInt32ConstantTy, kVarArgTy))
15578e950c117975d23f50ed7e32ca5db01a813c25d0TDYa
155876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_pop_shadow_frame()
1559e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(PopShadowFrame,
156076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_pop_shadow_frame,
1561e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
1562e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
1563e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG0())
1564e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
156576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers// void art_portable_update_dex_pc(uint32_t dex_pc)
1566e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao_EVAL_DEF_INTRINSICS_FUNC(UpdateDexPC,
156776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_update_dex_pc,
1568e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kAttrNoThrow,
1569e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          kVoidTy,
1570e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao                          _EXPAND_ARG1(kInt32ConstantTy))
1571e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
15722cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee//----------------------------------------------------------------------------
157376592633b491e294d78db2c4dbc44ca679004b71buzbee// FP Comparison
157476592633b491e294d78db2c4dbc44ca679004b71buzbee//----------------------------------------------------------------------------
157576592633b491e294d78db2c4dbc44ca679004b71buzbee// int cmpl_float(float, float)
157676592633b491e294d78db2c4dbc44ca679004b71buzbee_EVAL_DEF_INTRINSICS_FUNC(CmplFloat,
157776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_cmpl_float,
157876592633b491e294d78db2c4dbc44ca679004b71buzbee                          kAttrReadOnly | kAttrNoThrow,
157976592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
158076592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG2(kFloatTy, kFloatTy))
158176592633b491e294d78db2c4dbc44ca679004b71buzbee
158276592633b491e294d78db2c4dbc44ca679004b71buzbee// int cmpg_float(float, float)
158376592633b491e294d78db2c4dbc44ca679004b71buzbee_EVAL_DEF_INTRINSICS_FUNC(CmpgFloat,
158476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_cmpg_float,
158576592633b491e294d78db2c4dbc44ca679004b71buzbee                          kAttrReadOnly | kAttrNoThrow,
158676592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
158776592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG2(kFloatTy, kFloatTy))
158876592633b491e294d78db2c4dbc44ca679004b71buzbee
158976592633b491e294d78db2c4dbc44ca679004b71buzbee// int cmpl_double(double, double)
159076592633b491e294d78db2c4dbc44ca679004b71buzbee_EVAL_DEF_INTRINSICS_FUNC(CmplDouble,
159176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_cmpl_double,
159276592633b491e294d78db2c4dbc44ca679004b71buzbee                          kAttrReadOnly | kAttrNoThrow,
159376592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
159476592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG2(kDoubleTy, kDoubleTy))
159576592633b491e294d78db2c4dbc44ca679004b71buzbee
159676592633b491e294d78db2c4dbc44ca679004b71buzbee// int cmpg_double(double, double)
159776592633b491e294d78db2c4dbc44ca679004b71buzbee_EVAL_DEF_INTRINSICS_FUNC(CmpgDouble,
159876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_cmpg_double,
159976592633b491e294d78db2c4dbc44ca679004b71buzbee                          kAttrReadOnly | kAttrNoThrow,
160076592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
160176592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG2(kDoubleTy, kDoubleTy))
160276592633b491e294d78db2c4dbc44ca679004b71buzbee
160376592633b491e294d78db2c4dbc44ca679004b71buzbee//----------------------------------------------------------------------------
160476592633b491e294d78db2c4dbc44ca679004b71buzbee// Long Comparison
160576592633b491e294d78db2c4dbc44ca679004b71buzbee//----------------------------------------------------------------------------
160676592633b491e294d78db2c4dbc44ca679004b71buzbee// int cmp_long(long, long)
160776592633b491e294d78db2c4dbc44ca679004b71buzbee_EVAL_DEF_INTRINSICS_FUNC(CmpLong,
160876ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_cmp_long,
160976592633b491e294d78db2c4dbc44ca679004b71buzbee                          kAttrReadOnly | kAttrNoThrow,
161076592633b491e294d78db2c4dbc44ca679004b71buzbee                          kInt32Ty,
161176592633b491e294d78db2c4dbc44ca679004b71buzbee                          _EXPAND_ARG2(kInt64Ty, kInt64Ty))
161276592633b491e294d78db2c4dbc44ca679004b71buzbee
161376592633b491e294d78db2c4dbc44ca679004b71buzbee//----------------------------------------------------------------------------
16142cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee// Const intrinsics to assist MIR to Greenland_ir conversion.  Should not materialize
16152cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee// For simplicity, all use integer input
16162cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee//----------------------------------------------------------------------------
16172cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee// int const_int(int)
16182cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee_EVAL_DEF_INTRINSICS_FUNC(ConstInt,
161976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_const_int,
16202cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kAttrReadOnly | kAttrNoThrow,
16212cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kInt32Ty,
16222cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          _EXPAND_ARG1(kInt32Ty))
16232cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee
1624c9f40dd0a3dba696fc694d51fb82b61dcff19066Bill Buzbee// JavaObject* const_obj(int)
16252cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee_EVAL_DEF_INTRINSICS_FUNC(ConstObj,
162676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_const_obj,
16272cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kAttrReadOnly | kAttrNoThrow,
16282cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kJavaObjectTy,
16292cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          _EXPAND_ARG1(kInt32Ty))
16302cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee
1631c9f40dd0a3dba696fc694d51fb82b61dcff19066Bill Buzbee// long const_long(long)
16322cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee_EVAL_DEF_INTRINSICS_FUNC(ConstLong,
163376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_const_long,
16342cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kAttrReadOnly | kAttrNoThrow,
16352cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kInt64Ty,
16362cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          _EXPAND_ARG1(kInt64Ty))
16372cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee
1638c9f40dd0a3dba696fc694d51fb82b61dcff19066Bill Buzbee// float const_float(int)
16392cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee_EVAL_DEF_INTRINSICS_FUNC(ConstFloat,
164076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_const_Float,
16412cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kAttrReadOnly | kAttrNoThrow,
16422cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kFloatTy,
16432cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          _EXPAND_ARG1(kInt32Ty))
16442cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee
1645c9f40dd0a3dba696fc694d51fb82b61dcff19066Bill Buzbee// double const_double(long)
16462cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee_EVAL_DEF_INTRINSICS_FUNC(ConstDouble,
164776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_const_Double,
16482cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kAttrReadOnly | kAttrNoThrow,
16492cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kDoubleTy,
16502cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          _EXPAND_ARG1(kInt64Ty))
16512cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee
16522cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee
16532cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee//----------------------------------------------------------------------------
16542cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee// Copy intrinsics to assist MIR to Greenland_ir conversion.  Should not materialize
16552cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee//----------------------------------------------------------------------------
16562cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee
16572cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee// void method_info(void)
16582cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee_EVAL_DEF_INTRINSICS_FUNC(MethodInfo,
165976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_method_info,
16602cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kAttrReadOnly | kAttrNoThrow,
16612cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kVoidTy,
16622cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          _EXPAND_ARG0())
16632cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee
16642cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee// int copy_int(int)
16652cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee_EVAL_DEF_INTRINSICS_FUNC(CopyInt,
166676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_copy_int,
16672cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kAttrReadOnly | kAttrNoThrow,
16682cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kInt32Ty,
16692cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          _EXPAND_ARG1(kInt32Ty))
16702cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee
167175e4b60d28355d4c33d50093d9d2603ffdea82dcLogan Chien// JavaObject* copy_obj(obj)
16722cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee_EVAL_DEF_INTRINSICS_FUNC(CopyObj,
167376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_copy_obj,
16742cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kAttrReadOnly | kAttrNoThrow,
16752cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kJavaObjectTy,
16762cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          _EXPAND_ARG1(kJavaObjectTy))
16772cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee
16782a83e8f06031948741ae3dda3633433ddd669693buzbee// long copy_long(long)
16792cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee_EVAL_DEF_INTRINSICS_FUNC(CopyLong,
168076ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_copy_long,
16812cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kAttrReadOnly | kAttrNoThrow,
16822cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kInt64Ty,
16832cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          _EXPAND_ARG1(kInt64Ty))
16842cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee
168575e4b60d28355d4c33d50093d9d2603ffdea82dcLogan Chien// float copy_float(float)
16862cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee_EVAL_DEF_INTRINSICS_FUNC(CopyFloat,
168776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_copy_Float,
16882cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kAttrReadOnly | kAttrNoThrow,
16892cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kFloatTy,
16902cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          _EXPAND_ARG1(kFloatTy))
16912cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee
169275e4b60d28355d4c33d50093d9d2603ffdea82dcLogan Chien// double copy_double(double)
16932cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee_EVAL_DEF_INTRINSICS_FUNC(CopyDouble,
169476ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_copy_Double,
16952cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kAttrReadOnly | kAttrNoThrow,
16962cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          kDoubleTy,
16972cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee                          _EXPAND_ARG1(kDoubleTy))
16982cfc639fc803bf67e3d2a961f2b637220c86d5f7buzbee
1699101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee//----------------------------------------------------------------------------
17002a83e8f06031948741ae3dda3633433ddd669693buzbee// Shift intrinsics.  Shift semantics for Dalvik are a bit different than
17012a83e8f06031948741ae3dda3633433ddd669693buzbee// the llvm shift operators.  For 32-bit shifts, the shift count is constrained
17022a83e8f06031948741ae3dda3633433ddd669693buzbee// to the range of 0..31, while for 64-bit shifts we limit to 0..63.
17032a83e8f06031948741ae3dda3633433ddd669693buzbee// Further, the shift count for Long shifts in Dalvik is 32 bits, while
17042a83e8f06031948741ae3dda3633433ddd669693buzbee// llvm requires a 64-bit shift count. For GBC, we represent shifts as an
17052a83e8f06031948741ae3dda3633433ddd669693buzbee//  intrinsic to allow most efficient target-dependent lowering.
17062a83e8f06031948741ae3dda3633433ddd669693buzbee//----------------------------------------------------------------------------
17072a83e8f06031948741ae3dda3633433ddd669693buzbee// long shl_long(long,int)
17082a83e8f06031948741ae3dda3633433ddd669693buzbee_EVAL_DEF_INTRINSICS_FUNC(SHLLong,
170976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_shl_long,
17102a83e8f06031948741ae3dda3633433ddd669693buzbee                          kAttrReadOnly | kAttrNoThrow,
17112a83e8f06031948741ae3dda3633433ddd669693buzbee                          kInt64Ty,
17122a83e8f06031948741ae3dda3633433ddd669693buzbee                          _EXPAND_ARG2(kInt64Ty,kInt32Ty))
17132a83e8f06031948741ae3dda3633433ddd669693buzbee// long shr_long(long,int)
17142a83e8f06031948741ae3dda3633433ddd669693buzbee_EVAL_DEF_INTRINSICS_FUNC(SHRLong,
171576ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_shr_long,
17162a83e8f06031948741ae3dda3633433ddd669693buzbee                          kAttrReadOnly | kAttrNoThrow,
17172a83e8f06031948741ae3dda3633433ddd669693buzbee                          kInt64Ty,
17182a83e8f06031948741ae3dda3633433ddd669693buzbee                          _EXPAND_ARG2(kInt64Ty,kInt32Ty))
17192a83e8f06031948741ae3dda3633433ddd669693buzbee// long ushr_long(long,int)
17202a83e8f06031948741ae3dda3633433ddd669693buzbee_EVAL_DEF_INTRINSICS_FUNC(USHRLong,
172176ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_ushl_long,
17222a83e8f06031948741ae3dda3633433ddd669693buzbee                          kAttrReadOnly | kAttrNoThrow,
17232a83e8f06031948741ae3dda3633433ddd669693buzbee                          kInt64Ty,
17242a83e8f06031948741ae3dda3633433ddd669693buzbee                          _EXPAND_ARG2(kInt64Ty,kInt32Ty))
17252a83e8f06031948741ae3dda3633433ddd669693buzbee// int shl_int(int,int)
17262a83e8f06031948741ae3dda3633433ddd669693buzbee_EVAL_DEF_INTRINSICS_FUNC(SHLInt,
172776ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_shl_int,
17282a83e8f06031948741ae3dda3633433ddd669693buzbee                          kAttrReadOnly | kAttrNoThrow,
17292a83e8f06031948741ae3dda3633433ddd669693buzbee                          kInt32Ty,
17302a83e8f06031948741ae3dda3633433ddd669693buzbee                          _EXPAND_ARG2(kInt32Ty,kInt32Ty))
17312a83e8f06031948741ae3dda3633433ddd669693buzbee// long shr_int(int,int)
17322a83e8f06031948741ae3dda3633433ddd669693buzbee_EVAL_DEF_INTRINSICS_FUNC(SHRInt,
173376ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_shr_int,
17342a83e8f06031948741ae3dda3633433ddd669693buzbee                          kAttrReadOnly | kAttrNoThrow,
17352a83e8f06031948741ae3dda3633433ddd669693buzbee                          kInt32Ty,
17362a83e8f06031948741ae3dda3633433ddd669693buzbee                          _EXPAND_ARG2(kInt32Ty,kInt32Ty))
17372a83e8f06031948741ae3dda3633433ddd669693buzbee// int ushr_long(int,int)
17382a83e8f06031948741ae3dda3633433ddd669693buzbee_EVAL_DEF_INTRINSICS_FUNC(USHRInt,
173976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_ushl_int,
17402a83e8f06031948741ae3dda3633433ddd669693buzbee                          kAttrReadOnly | kAttrNoThrow,
17412a83e8f06031948741ae3dda3633433ddd669693buzbee                          kInt32Ty,
17422a83e8f06031948741ae3dda3633433ddd669693buzbee                          _EXPAND_ARG2(kInt32Ty,kInt32Ty))
17432a83e8f06031948741ae3dda3633433ddd669693buzbee//----------------------------------------------------------------------------
1744101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee// Conversion instrinsics.  Note: these should eventually be removed.  We
1745101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee// can express these directly in bitcode, but by using intrinsics the
1746101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee// Quick compiler can be more efficient.  Some extra optimization infrastructure
1747101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee// will have to be developed to undo the bitcode verbosity when these are
1748101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee// done inline.
1749101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee//----------------------------------------------------------------------------
1750101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee// int int_to_byte(int)
1751101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(IntToByte,
175276ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_int_to_byte,
1753101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrReadOnly | kAttrNoThrow,
1754101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kInt32Ty,
1755101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG1(kInt32Ty))
1756101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1757101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee// int int_to_char(int)
1758101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(IntToChar,
175976ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_int_to_char,
1760101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrReadOnly | kAttrNoThrow,
1761101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kInt32Ty,
1762101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG1(kInt32Ty))
1763101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee
1764101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee// int int_to_short(int)
1765101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee_EVAL_DEF_INTRINSICS_FUNC(IntToShort,
176676ae4fe651c77619aeeb4dd395c7ec8fc29685fcIan Rogers                          art_portable_int_to_short,
1767101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kAttrReadOnly | kAttrNoThrow,
1768101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          kInt32Ty,
1769101305f7ca3da8c665e3c5f7cdf9e1f22f009567buzbee                          _EXPAND_ARG1(kInt32Ty))
1770e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
17710d43d5465f43eb8838e8ad3c02045d4d8c7ee380Sebastien Hertz//----------------------------------------------------------------------------
17720d43d5465f43eb8838e8ad3c02045d4d8c7ee380Sebastien Hertz// Memory barrier
17730d43d5465f43eb8838e8ad3c02045d4d8c7ee380Sebastien Hertz//----------------------------------------------------------------------------
17740d43d5465f43eb8838e8ad3c02045d4d8c7ee380Sebastien Hertz// void constructor_barrier()
17750d43d5465f43eb8838e8ad3c02045d4d8c7ee380Sebastien Hertz_EVAL_DEF_INTRINSICS_FUNC(ConstructorBarrier,
17760d43d5465f43eb8838e8ad3c02045d4d8c7ee380Sebastien Hertz                          art_portable_constructor_barrier,
17770d43d5465f43eb8838e8ad3c02045d4d8c7ee380Sebastien Hertz                          kAttrReadOnly | kAttrNoThrow,
17780d43d5465f43eb8838e8ad3c02045d4d8c7ee380Sebastien Hertz                          kVoidTy,
17790d43d5465f43eb8838e8ad3c02045d4d8c7ee380Sebastien Hertz                          _EXPAND_ARG0())
17800d43d5465f43eb8838e8ad3c02045d4d8c7ee380Sebastien Hertz
1781e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao// Clean up all internal used macros
1782e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _EXPAND_ARG0
1783e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _EXPAND_ARG1
1784e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _EXPAND_ARG2
1785e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _EXPAND_ARG3
1786e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _EXPAND_ARG4
1787e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _EXPAND_ARG5
1788e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
1789e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _JTYPE_OF_kInt1Ty_UNDER_kArray
1790e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _JTYPE_OF_kInt8Ty_UNDER_kArray
1791e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _JTYPE_OF_kInt16Ty_UNDER_kArray
1792e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _JTYPE_OF_kInt32Ty_UNDER_kArray
1793e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _JTYPE_OF_kInt64Ty_UNDER_kArray
1794e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _JTYPE_OF_kJavaObjectTy_UNDER_kArray
1795e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
1796e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _JTYPE_OF_kInt1Ty_UNDER_kField
1797e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _JTYPE_OF_kInt8Ty_UNDER_kField
1798e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _JTYPE_OF_kInt16Ty_UNDER_kField
1799e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _JTYPE_OF_kInt32Ty_UNDER_kField
1800e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _JTYPE_OF_kInt64Ty_UNDER_kField
1801e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef _JTYPE_OF_kJavaObjectTy_UNDER_kField
1802e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao
1803e94d9b23c52ec0f36c8a132914eac33bc707faffShih-wei Liao#undef DEF_INTRINSICS_FUNC
1804