blob: 47c6d28002ae4396dc8a02f90659be296fa773e3 [file] [log] [blame]
Andreas Gampe5c1e4352014-04-21 19:28:24 -07001/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#include <stdint.h>
18
19#include "common_runtime_test.h"
20#include "mirror/art_method.h"
21
22namespace art {
23
24class ArchTest : public CommonRuntimeTest {
25 protected:
26 static void CheckFrameSize(InstructionSet isa, Runtime::CalleeSaveType type, uint32_t save_size)
27 NO_THREAD_SAFETY_ANALYSIS {
28 Runtime* r = Runtime::Current();
29
30 Thread* t = Thread::Current();
31 t->TransitionFromSuspendedToRunnable(); // So we can create callee-save methods.
32
33 mirror::ArtMethod* save_method = r->CreateCalleeSaveMethod(isa, type);
34 EXPECT_EQ(save_method->GetFrameSizeInBytes(), save_size) << "Expected and real size differs for "
35 << type << " core spills=" << std::hex << save_method->GetCoreSpillMask() << " fp spills="
36 << save_method->GetFpSpillMask() << std::dec;
37
38 t->TransitionFromRunnableToSuspended(ThreadState::kNative); // So we can shut down.
39 }
40};
41
42
43TEST_F(ArchTest, ARM) {
44#include "arch/arm/asm_support_arm.h"
45#undef ART_RUNTIME_ARCH_ARM_ASM_SUPPORT_ARM_H_
46
47
48#ifdef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
49 CheckFrameSize(InstructionSet::kArm, Runtime::kSaveAll, FRAME_SIZE_SAVE_ALL_CALLEE_SAVE);
50#else
51 LOG(WARNING) << "No frame size for SaveAll";
52#endif
53#ifdef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
54 CheckFrameSize(InstructionSet::kArm, Runtime::kRefsOnly, FRAME_SIZE_REFS_ONLY_CALLEE_SAVE);
55#else
56 LOG(WARNING) << "No frame size for RefsOnly";
57#endif
58#ifdef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
59 CheckFrameSize(InstructionSet::kArm, Runtime::kRefsAndArgs, FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE);
60#else
61 LOG(WARNING) << "No frame size for RefsAndArgs";
62#endif
63
64
65#ifdef RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET
66#undef RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET
67#endif
68#ifdef RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET
69#undef RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET
70#endif
71#ifdef RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET
72#undef RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET
73#endif
74#ifdef THREAD_SELF_OFFSET
75#undef THREAD_SELF_OFFSET
76#endif
77#ifdef THREAD_CARD_TABLE_OFFSET
78#undef THREAD_CARD_TABLE_OFFSET
79#endif
80#ifdef THREAD_EXCEPTION_OFFSET
81#undef THREAD_EXCEPTION_OFFSET
82#endif
83#ifdef THREAD_ID_OFFSET
84#undef THREAD_ID_OFFSET
85#endif
86#ifdef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
87#undef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
88#endif
89#ifdef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
90#undef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
91#endif
92#ifdef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
93#undef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
94#endif
95}
96
97
98TEST_F(ArchTest, ARM64) {
99#include "arch/arm64/asm_support_arm64.h"
100#undef ART_RUNTIME_ARCH_ARM64_ASM_SUPPORT_ARM64_H_
101
102
103#ifdef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
104 CheckFrameSize(InstructionSet::kArm64, Runtime::kSaveAll, FRAME_SIZE_SAVE_ALL_CALLEE_SAVE);
105#else
106 LOG(WARNING) << "No frame size for SaveAll";
107#endif
108#ifdef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
109 CheckFrameSize(InstructionSet::kArm64, Runtime::kRefsOnly, FRAME_SIZE_REFS_ONLY_CALLEE_SAVE);
110#else
111 LOG(WARNING) << "No frame size for RefsOnly";
112#endif
113#ifdef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
114 CheckFrameSize(InstructionSet::kArm64, Runtime::kRefsAndArgs, FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE);
115#else
116 LOG(WARNING) << "No frame size for RefsAndArgs";
117#endif
118
119
120#ifdef RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET
121#undef RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET
122#endif
123#ifdef RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET
124#undef RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET
125#endif
126#ifdef RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET
127#undef RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET
128#endif
129#ifdef THREAD_SELF_OFFSET
130#undef THREAD_SELF_OFFSET
131#endif
132#ifdef THREAD_CARD_TABLE_OFFSET
133#undef THREAD_CARD_TABLE_OFFSET
134#endif
135#ifdef THREAD_EXCEPTION_OFFSET
136#undef THREAD_EXCEPTION_OFFSET
137#endif
138#ifdef THREAD_ID_OFFSET
139#undef THREAD_ID_OFFSET
140#endif
141#ifdef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
142#undef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
143#endif
144#ifdef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
145#undef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
146#endif
147#ifdef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
148#undef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
149#endif
150}
151
152
153TEST_F(ArchTest, MIPS) {
154#include "arch/mips/asm_support_mips.h"
155#undef ART_RUNTIME_ARCH_MIPS_ASM_SUPPORT_MIPS_H_
156
157
158#ifdef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
159 CheckFrameSize(InstructionSet::kMips, Runtime::kSaveAll, FRAME_SIZE_SAVE_ALL_CALLEE_SAVE);
160#else
161 LOG(WARNING) << "No frame size for SaveAll";
162#endif
163#ifdef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
164 CheckFrameSize(InstructionSet::kMips, Runtime::kRefsOnly, FRAME_SIZE_REFS_ONLY_CALLEE_SAVE);
165#else
166 LOG(WARNING) << "No frame size for RefsOnly";
167#endif
168#ifdef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
169 CheckFrameSize(InstructionSet::kMips, Runtime::kRefsAndArgs, FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE);
170#else
171 LOG(WARNING) << "No frame size for RefsAndArgs";
172#endif
173
174
175#ifdef RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET
176#undef RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET
177#endif
178#ifdef RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET
179#undef RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET
180#endif
181#ifdef RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET
182#undef RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET
183#endif
184#ifdef THREAD_SELF_OFFSET
185#undef THREAD_SELF_OFFSET
186#endif
187#ifdef THREAD_CARD_TABLE_OFFSET
188#undef THREAD_CARD_TABLE_OFFSET
189#endif
190#ifdef THREAD_EXCEPTION_OFFSET
191#undef THREAD_EXCEPTION_OFFSET
192#endif
193#ifdef THREAD_ID_OFFSET
194#undef THREAD_ID_OFFSET
195#endif
196#ifdef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
197#undef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
198#endif
199#ifdef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
200#undef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
201#endif
202#ifdef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
203#undef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
204#endif
205}
206
207
208TEST_F(ArchTest, X86) {
209#include "arch/x86/asm_support_x86.h"
210#undef ART_RUNTIME_ARCH_X86_ASM_SUPPORT_X86_H_
211
212
213#ifdef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
214 CheckFrameSize(InstructionSet::kX86, Runtime::kSaveAll, FRAME_SIZE_SAVE_ALL_CALLEE_SAVE);
215#else
216 LOG(WARNING) << "No frame size for SaveAll";
217#endif
218#ifdef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
219 CheckFrameSize(InstructionSet::kX86, Runtime::kRefsOnly, FRAME_SIZE_REFS_ONLY_CALLEE_SAVE);
220#else
221 LOG(WARNING) << "No frame size for RefsOnly";
222#endif
223#ifdef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
224 CheckFrameSize(InstructionSet::kX86, Runtime::kRefsAndArgs, FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE);
225#else
226 LOG(WARNING) << "No frame size for RefsAndArgs";
227#endif
228
229
230#ifdef RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET
231#undef RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET
232#endif
233#ifdef RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET
234#undef RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET
235#endif
236#ifdef RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET
237#undef RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET
238#endif
239#ifdef THREAD_SELF_OFFSET
240#undef THREAD_SELF_OFFSET
241#endif
242#ifdef THREAD_CARD_TABLE_OFFSET
243#undef THREAD_CARD_TABLE_OFFSET
244#endif
245#ifdef THREAD_EXCEPTION_OFFSET
246#undef THREAD_EXCEPTION_OFFSET
247#endif
248#ifdef THREAD_ID_OFFSET
249#undef THREAD_ID_OFFSET
250#endif
251#ifdef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
252#undef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
253#endif
254#ifdef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
255#undef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
256#endif
257#ifdef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
258#undef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
259#endif
260}
261
262
263TEST_F(ArchTest, X86_64) {
264#include "arch/x86_64/asm_support_x86_64.h"
265#undef ART_RUNTIME_ARCH_X86_64_ASM_SUPPORT_X86_64_H_
266
267
268#ifdef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
269 CheckFrameSize(InstructionSet::kX86_64, Runtime::kSaveAll, FRAME_SIZE_SAVE_ALL_CALLEE_SAVE);
270#else
271 LOG(WARNING) << "No frame size for SaveAll";
272#endif
273#ifdef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
274 CheckFrameSize(InstructionSet::kX86_64, Runtime::kRefsOnly, FRAME_SIZE_REFS_ONLY_CALLEE_SAVE);
275#else
276 LOG(WARNING) << "No frame size for RefsOnly";
277#endif
278#ifdef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
279 CheckFrameSize(InstructionSet::kX86_64, Runtime::kRefsAndArgs, FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE);
280#else
281 LOG(WARNING) << "No frame size for RefsAndArgs";
282#endif
283
284
285#ifdef RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET
286#undef RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET
287#endif
288#ifdef RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET
289#undef RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET
290#endif
291#ifdef RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET
292#undef RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET
293#endif
294#ifdef THREAD_SELF_OFFSET
295#undef THREAD_SELF_OFFSET
296#endif
297#ifdef THREAD_CARD_TABLE_OFFSET
298#undef THREAD_CARD_TABLE_OFFSET
299#endif
300#ifdef THREAD_EXCEPTION_OFFSET
301#undef THREAD_EXCEPTION_OFFSET
302#endif
303#ifdef THREAD_ID_OFFSET
304#undef THREAD_ID_OFFSET
305#endif
306#ifdef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
307#undef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
308#endif
309#ifdef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
310#undef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
311#endif
312#ifdef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
313#undef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
314#endif
315}
316
317
318TEST_F(ArchTest, ThreadOffsets) {
319#if defined(__arm__)
320#include "arch/arm/asm_support_arm.h"
321#undef ART_RUNTIME_ARCH_ARM_ASM_SUPPORT_ARM_H_
322#elif defined(__aarch64__)
323#include "arch/arm64/asm_support_arm64.h"
324#undef ART_RUNTIME_ARCH_ARM64_ASM_SUPPORT_ARM64_H_
325#elif defined(__mips__)
326#include "arch/mips/asm_support_mips.h"
327#undef ART_RUNTIME_ARCH_MIPS_ASM_SUPPORT_MIPS_H_
328#elif defined(__i386__)
329#include "arch/x86/asm_support_x86.h"
330#undef ART_RUNTIME_ARCH_X86_ASM_SUPPORT_X86_H_
331#elif defined(__x86_64__)
332#include "arch/x86_64/asm_support_x86_64.h"
333#undef ART_RUNTIME_ARCH_X86_64_ASM_SUPPORT_X86_64_H_
334#else
335 // This happens for the host test.
336#ifdef __LP64__
337#include "arch/x86_64/asm_support_x86_64.h"
338#undef ART_RUNTIME_ARCH_X86_64_ASM_SUPPORT_X86_64_H_
339#else
340#include "arch/x86/asm_support_x86.h"
341#undef ART_RUNTIME_ARCH_X86_ASM_SUPPORT_X86_H_
342#endif
343#endif
344
345 // Ugly hack, change when possible.
346#ifdef __LP64__
347#define POINTER_SIZE 8
348#else
349#define POINTER_SIZE 4
350#endif
351
352#if defined(THREAD_SELF_OFFSET)
353 ThreadOffset<POINTER_SIZE> self_offset = Thread::SelfOffset<POINTER_SIZE>();
354 EXPECT_EQ(self_offset.Int32Value(), THREAD_SELF_OFFSET);
355#else
356 LOG(INFO) << "No Thread Self Offset found.";
357#endif
358
359#if defined(THREAD_CARD_TABLE_OFFSET)
360 ThreadOffset<POINTER_SIZE> card_offset = Thread::CardTableOffset<POINTER_SIZE>();
361 EXPECT_EQ(card_offset.Int32Value(), THREAD_CARD_TABLE_OFFSET);
362#else
363 LOG(INFO) << "No Thread Card Table Offset found.";
364#endif
365
366#if defined(THREAD_EXCEPTION_OFFSET)
367 ThreadOffset<POINTER_SIZE> exc_offset = Thread::ExceptionOffset<POINTER_SIZE>();
368 EXPECT_EQ(exc_offset.Int32Value(), THREAD_EXCEPTION_OFFSET);
369#else
370 LOG(INFO) << "No Thread Exception Offset found.";
371#endif
372
373#if defined(THREAD_ID_OFFSET)
374 ThreadOffset<POINTER_SIZE> id_offset = Thread::ThinLockIdOffset<POINTER_SIZE>();
375 EXPECT_EQ(id_offset.Int32Value(), THREAD_ID_OFFSET);
376#else
377 LOG(INFO) << "No Thread ID Offset found.";
378#endif
379
380
381 // Undefine everything for the next test
382#ifdef RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET
383#undef RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET
384#endif
385#ifdef RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET
386#undef RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET
387#endif
388#ifdef RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET
389#undef RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET
390#endif
391#ifdef THREAD_SELF_OFFSET
392#undef THREAD_SELF_OFFSET
393#endif
394#ifdef THREAD_CARD_TABLE_OFFSET
395#undef THREAD_CARD_TABLE_OFFSET
396#endif
397#ifdef THREAD_EXCEPTION_OFFSET
398#undef THREAD_EXCEPTION_OFFSET
399#endif
400#ifdef THREAD_ID_OFFSET
401#undef THREAD_ID_OFFSET
402#endif
403#ifdef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
404#undef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
405#endif
406#ifdef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
407#undef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
408#endif
409#ifdef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
410#undef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
411#endif
412}
413
414
415TEST_F(ArchTest, CalleeSaveMethodOffsets) {
416#if defined(__arm__)
417#include "arch/arm/asm_support_arm.h"
418#undef ART_RUNTIME_ARCH_ARM_ASM_SUPPORT_ARM_H_
419#elif defined(__aarch64__)
420#include "arch/arm64/asm_support_arm64.h"
421#undef ART_RUNTIME_ARCH_ARM64_ASM_SUPPORT_ARM64_H_
422#elif defined(__mips__)
423#include "arch/mips/asm_support_mips.h"
424#undef ART_RUNTIME_ARCH_MIPS_ASM_SUPPORT_MIPS_H_
425#elif defined(__i386__)
426#include "arch/x86/asm_support_x86.h"
427#undef ART_RUNTIME_ARCH_X86_ASM_SUPPORT_X86_H_
428#elif defined(__x86_64__)
429#include "arch/x86_64/asm_support_x86_64.h"
430#undef ART_RUNTIME_ARCH_X86_64_ASM_SUPPORT_X86_64_H_
431#else
432 // This happens for the host test.
433#ifdef __LP64__
434#include "arch/x86_64/asm_support_x86_64.h"
435#undef ART_RUNTIME_ARCH_X86_64_ASM_SUPPORT_X86_64_H_
436#else
437#include "arch/x86/asm_support_x86.h"
438#undef ART_RUNTIME_ARCH_X86_ASM_SUPPORT_X86_H_
439#endif
440#endif
441
442
443#if defined(RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET)
444 EXPECT_EQ(Runtime::GetCalleeSaveMethodOffset(Runtime::kSaveAll),
445 static_cast<size_t>(RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET));
446#else
447 LOG(INFO) << "No Runtime Save-all Offset found.";
448#endif
449
450#if defined(RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET)
451 EXPECT_EQ(Runtime::GetCalleeSaveMethodOffset(Runtime::kRefsOnly),
452 static_cast<size_t>(RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET));
453#else
454 LOG(INFO) << "No Runtime Refs-only Offset found.";
455#endif
456
457#if defined(RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET)
458 EXPECT_EQ(Runtime::GetCalleeSaveMethodOffset(Runtime::kRefsAndArgs),
459 static_cast<size_t>(RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET));
460#else
461 LOG(INFO) << "No Runtime Refs-and-Args Offset found.";
462#endif
463
464
465 // Undefine everything for the next test
466#ifdef RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET
467#undef RUNTIME_SAVE_ALL_CALLEE_SAVE_FRAME_OFFSET
468#endif
469#ifdef RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET
470#undef RUNTIME_REFS_ONLY_CALLEE_SAVE_FRAME_OFFSET
471#endif
472#ifdef RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET
473#undef RUNTIME_REF_AND_ARGS_CALLEE_SAVE_FRAME_OFFSET
474#endif
475#ifdef THREAD_SELF_OFFSET
476#undef THREAD_SELF_OFFSET
477#endif
478#ifdef THREAD_CARD_TABLE_OFFSET
479#undef THREAD_CARD_TABLE_OFFSET
480#endif
481#ifdef THREAD_EXCEPTION_OFFSET
482#undef THREAD_EXCEPTION_OFFSET
483#endif
484#ifdef THREAD_ID_OFFSET
485#undef THREAD_ID_OFFSET
486#endif
487#ifdef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
488#undef FRAME_SIZE_SAVE_ALL_CALLEE_SAVE
489#endif
490#ifdef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
491#undef FRAME_SIZE_REFS_ONLY_CALLEE_SAVE
492#endif
493#ifdef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
494#undef FRAME_SIZE_REFS_AND_ARGS_CALLEE_SAVE
495#endif
496}
497
498} // namespace art