17655f29fabc0a12765de828914a18314382e5a35Ian Rogers/* 27655f29fabc0a12765de828914a18314382e5a35Ian Rogers * Copyright (C) 2012 The Android Open Source Project 37655f29fabc0a12765de828914a18314382e5a35Ian Rogers * 47655f29fabc0a12765de828914a18314382e5a35Ian Rogers * Licensed under the Apache License, Version 2.0 (the "License"); 57655f29fabc0a12765de828914a18314382e5a35Ian Rogers * you may not use this file except in compliance with the License. 67655f29fabc0a12765de828914a18314382e5a35Ian Rogers * You may obtain a copy of the License at 77655f29fabc0a12765de828914a18314382e5a35Ian Rogers * 87655f29fabc0a12765de828914a18314382e5a35Ian Rogers * http://www.apache.org/licenses/LICENSE-2.0 97655f29fabc0a12765de828914a18314382e5a35Ian Rogers * 107655f29fabc0a12765de828914a18314382e5a35Ian Rogers * Unless required by applicable law or agreed to in writing, software 117655f29fabc0a12765de828914a18314382e5a35Ian Rogers * distributed under the License is distributed on an "AS IS" BASIS, 127655f29fabc0a12765de828914a18314382e5a35Ian Rogers * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137655f29fabc0a12765de828914a18314382e5a35Ian Rogers * See the License for the specific language governing permissions and 147655f29fabc0a12765de828914a18314382e5a35Ian Rogers * limitations under the License. 157655f29fabc0a12765de828914a18314382e5a35Ian Rogers */ 167655f29fabc0a12765de828914a18314382e5a35Ian Rogers 177655f29fabc0a12765de828914a18314382e5a35Ian Rogers#include "entrypoints/entrypoint_utils.h" 187655f29fabc0a12765de828914a18314382e5a35Ian Rogers#include "gc/accounting/card_table-inl.h" 19ea46f950e7a51585db293cd7f047de190a482414Brian Carlstrom#include "mirror/art_method-inl.h" 207655f29fabc0a12765de828914a18314382e5a35Ian Rogers#include "mirror/object-inl.h" 217655f29fabc0a12765de828914a18314382e5a35Ian Rogers 227655f29fabc0a12765de828914a18314382e5a35Ian Rogersnamespace art { 237655f29fabc0a12765de828914a18314382e5a35Ian Rogers 247655f29fabc0a12765de828914a18314382e5a35Ian Rogersextern "C" mirror::Object* art_portable_initialize_static_storage_from_code(uint32_t type_idx, 25ea46f950e7a51585db293cd7f047de190a482414Brian Carlstrom mirror::ArtMethod* referrer, 267655f29fabc0a12765de828914a18314382e5a35Ian Rogers Thread* thread) 277655f29fabc0a12765de828914a18314382e5a35Ian Rogers SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) { 287655f29fabc0a12765de828914a18314382e5a35Ian Rogers return ResolveVerifyAndClinit(type_idx, referrer, thread, true, false); 297655f29fabc0a12765de828914a18314382e5a35Ian Rogers} 307655f29fabc0a12765de828914a18314382e5a35Ian Rogers 317655f29fabc0a12765de828914a18314382e5a35Ian Rogersextern "C" mirror::Object* art_portable_initialize_type_from_code(uint32_t type_idx, 32ea46f950e7a51585db293cd7f047de190a482414Brian Carlstrom mirror::ArtMethod* referrer, 337655f29fabc0a12765de828914a18314382e5a35Ian Rogers Thread* thread) 347655f29fabc0a12765de828914a18314382e5a35Ian Rogers SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) { 357655f29fabc0a12765de828914a18314382e5a35Ian Rogers return ResolveVerifyAndClinit(type_idx, referrer, thread, false, false); 367655f29fabc0a12765de828914a18314382e5a35Ian Rogers} 377655f29fabc0a12765de828914a18314382e5a35Ian Rogers 387655f29fabc0a12765de828914a18314382e5a35Ian Rogersextern "C" mirror::Object* art_portable_initialize_type_and_verify_access_from_code(uint32_t type_idx, 39ea46f950e7a51585db293cd7f047de190a482414Brian Carlstrom mirror::ArtMethod* referrer, 407655f29fabc0a12765de828914a18314382e5a35Ian Rogers Thread* thread) 417655f29fabc0a12765de828914a18314382e5a35Ian Rogers SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) { 427655f29fabc0a12765de828914a18314382e5a35Ian Rogers // Called when caller isn't guaranteed to have access to a type and the dex cache may be 437655f29fabc0a12765de828914a18314382e5a35Ian Rogers // unpopulated 447655f29fabc0a12765de828914a18314382e5a35Ian Rogers return ResolveVerifyAndClinit(type_idx, referrer, thread, false, true); 457655f29fabc0a12765de828914a18314382e5a35Ian Rogers} 467655f29fabc0a12765de828914a18314382e5a35Ian Rogers 47ea46f950e7a51585db293cd7f047de190a482414Brian Carlstromextern "C" mirror::Object* art_portable_resolve_string_from_code(mirror::ArtMethod* referrer, 487655f29fabc0a12765de828914a18314382e5a35Ian Rogers uint32_t string_idx) 497655f29fabc0a12765de828914a18314382e5a35Ian Rogers SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) { 507655f29fabc0a12765de828914a18314382e5a35Ian Rogers return ResolveStringFromCode(referrer, string_idx); 517655f29fabc0a12765de828914a18314382e5a35Ian Rogers} 527655f29fabc0a12765de828914a18314382e5a35Ian Rogers 537655f29fabc0a12765de828914a18314382e5a35Ian Rogers} // namespace art 54