12faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes/*
22faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Copyright (C) 2011 The Android Open Source Project
32faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *
42faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License");
52faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * you may not use this file except in compliance with the License.
62faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * You may obtain a copy of the License at
72faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *
82faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *      http://www.apache.org/licenses/LICENSE-2.0
92faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes *
102faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Unless required by applicable law or agreed to in writing, software
112faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
122faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * See the License for the specific language governing permissions and
142faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * limitations under the License.
152faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes */
169651f425f7413772a7b5352da2b04eb7de7d416fIan Rogers
17fc0e3219edc9a5bf81b166e82fd5db2796eb6a0dBrian Carlstrom#ifndef ART_RUNTIME_ASM_SUPPORT_H_
18fc0e3219edc9a5bf81b166e82fd5db2796eb6a0dBrian Carlstrom#define ART_RUNTIME_ASM_SUPPORT_H_
199651f425f7413772a7b5352da2b04eb7de7d416fIan Rogers
20800ac2defde5d12b2f1f313c6b6162560cfa6fc7Hiroshi Yamauchi#include "read_barrier_c.h"
219d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi
224b07f172d98846ca6b04d592ea8fd1a1659ada96Ian Rogers// Value loaded into rSUSPEND for quick. When this value is counted down to zero we do a suspend
234b07f172d98846ca6b04d592ea8fd1a1659ada96Ian Rogers// check.
244a510d8750d50b77353d0a5a891d1b9b3a48ecd5Ian Rogers#define SUSPEND_CHECK_INTERVAL (1000)
254a510d8750d50b77353d0a5a891d1b9b3a48ecd5Ian Rogers
26d9c4fc94fa618617f94e1de9af5f034549100753Ian Rogers// Offsets within java.lang.Object.
27a9a8254c920ce8e22210abfc16c9842ce0aea28fIan Rogers#define CLASS_OFFSET 0
28d9c4fc94fa618617f94e1de9af5f034549100753Ian Rogers#define LOCK_WORD_OFFSET 4
29d9c4fc94fa618617f94e1de9af5f034549100753Ian Rogers
3063bc11efaac0c041e849ab401f9fc368631a00f5Ian Rogers#if !defined(USE_BAKER_OR_BROOKS_READ_BARRIER)
319d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi
32a9a8254c920ce8e22210abfc16c9842ce0aea28fIan Rogers// Offsets within java.lang.Class.
33a9a8254c920ce8e22210abfc16c9842ce0aea28fIan Rogers#define CLASS_COMPONENT_TYPE_OFFSET 12
34a9a8254c920ce8e22210abfc16c9842ce0aea28fIan Rogers
35a9a8254c920ce8e22210abfc16c9842ce0aea28fIan Rogers// Array offsets.
36a9a8254c920ce8e22210abfc16c9842ce0aea28fIan Rogers#define ARRAY_LENGTH_OFFSET 8
37a9a8254c920ce8e22210abfc16c9842ce0aea28fIan Rogers#define OBJECT_ARRAY_DATA_OFFSET 12
38a9a8254c920ce8e22210abfc16c9842ce0aea28fIan Rogers
394b07f172d98846ca6b04d592ea8fd1a1659ada96Ian Rogers// Offsets within java.lang.String.
40fc9e6fabed89d948fa8c0e9d673e430076712c60buzbee#define STRING_VALUE_OFFSET 8
41fc9e6fabed89d948fa8c0e9d673e430076712c60buzbee#define STRING_COUNT_OFFSET 12
42fc9e6fabed89d948fa8c0e9d673e430076712c60buzbee#define STRING_OFFSET_OFFSET 20
43fc9e6fabed89d948fa8c0e9d673e430076712c60buzbee#define STRING_DATA_OFFSET 12
44fc9e6fabed89d948fa8c0e9d673e430076712c60buzbee
4588474b416eb257078e590bf9bc7957cee604a186Jeff Hao// Offsets within java.lang.Method.
465ddb4104ac605d66693b55b79f26f8b8a5505e63Ian Rogers#define METHOD_DEX_CACHE_METHODS_OFFSET 12
4763bc11efaac0c041e849ab401f9fc368631a00f5Ian Rogers#if defined(ART_USE_PORTABLE_COMPILER)
48ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers#define METHOD_PORTABLE_CODE_OFFSET 40
49ef7d42fca18c16fbaf103822ad16f23246e2905dIan Rogers#define METHOD_QUICK_CODE_OFFSET 48
5063bc11efaac0c041e849ab401f9fc368631a00f5Ian Rogers#else
5163bc11efaac0c041e849ab401f9fc368631a00f5Ian Rogers#define METHOD_PORTABLE_CODE_OFFSET 40
5263bc11efaac0c041e849ab401f9fc368631a00f5Ian Rogers#define METHOD_QUICK_CODE_OFFSET 40
5363bc11efaac0c041e849ab401f9fc368631a00f5Ian Rogers#endif  // ART_USE_PORTABLE_COMPILER
545d9173014c1ca09f7249a6b07629aa37778b5f8fJeff Hao
559d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi#else
569d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi
579d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi// Offsets within java.lang.Class.
589d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi#define CLASS_COMPONENT_TYPE_OFFSET 20
599d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi
609d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi// Array offsets.
619d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi#define ARRAY_LENGTH_OFFSET 16
629d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi#define OBJECT_ARRAY_DATA_OFFSET 20
639d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi
649d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi// Offsets within java.lang.String.
659d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi#define STRING_VALUE_OFFSET 16
669d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi#define STRING_COUNT_OFFSET 20
679d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi#define STRING_OFFSET_OFFSET 28
689d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi#define STRING_DATA_OFFSET 20
699d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi
709d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi// Offsets within java.lang.Method.
719d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi#define METHOD_DEX_CACHE_METHODS_OFFSET 20
729d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi#define METHOD_PORTABLE_CODE_OFFSET 48
739d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi#define METHOD_QUICK_CODE_OFFSET 56
749d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi
7563bc11efaac0c041e849ab401f9fc368631a00f5Ian Rogers#endif  // USE_BAKER_OR_BROOKS_READ_BARRIER
769d04a20bde1b1855cefc64aebc1a44e253b1a13bHiroshi Yamauchi
77fc0e3219edc9a5bf81b166e82fd5db2796eb6a0dBrian Carlstrom#endif  // ART_RUNTIME_ASM_SUPPORT_H_
78