14d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi/* 24d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi * Copyright (C) 2014 The Android Open Source Project 34d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi * 44d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi * Licensed under the Apache License, Version 2.0 (the "License"); 54d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi * you may not use this file except in compliance with the License. 64d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi * You may obtain a copy of the License at 74d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi * 84d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi * http://www.apache.org/licenses/LICENSE-2.0 94d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi * 104d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi * Unless required by applicable law or agreed to in writing, software 114d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi * distributed under the License is distributed on an "AS IS" BASIS, 124d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi * See the License for the specific language governing permissions and 144d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi * limitations under the License. 154d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi */ 164d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi 17e401d146407d61eeb99f8d6176b2ac13c4df1e33Mathieu Chartier#include "art_method-inl.h" 184d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi#include "jni.h" 194d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi#include "mirror/array.h" 204d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi#include "mirror/class.h" 214d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi#include "mirror/class-inl.h" 224d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi#include "mirror/object-inl.h" 234d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi#include "scoped_thread_state_change.h" 244d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi 254d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchinamespace art { 264d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi 271c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampeextern "C" JNIEXPORT jint JNICALL Java_Main_vmArrayBaseOffset(JNIEnv* env, jclass, jobject classObj) { 284d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi ScopedObjectAccess soa(env); 294d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi mirror::Class* klass = soa.Decode<mirror::Class*>(classObj); 304d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi return mirror::Array::DataOffset( 314d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi Primitive::ComponentSize(klass->GetComponentType()->GetPrimitiveType())).Int32Value(); 324d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi} 334d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi 341c83cbc4a817acbd7f9abb5b29a2d418a958e6a1Andreas Gampeextern "C" JNIEXPORT jint JNICALL Java_Main_vmArrayIndexScale(JNIEnv* env, jclass, jobject classObj) { 354d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi ScopedObjectAccess soa(env); 364d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi mirror::Class* klass = soa.Decode<mirror::Class*>(classObj); 374d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi return Primitive::ComponentSize(klass->GetComponentType()->GetPrimitiveType()); 384d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi} 394d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi 404d2efce8bf1947880b90efc44448b4940c8016fbHiroshi Yamauchi} // namespace art 41