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