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