| /* |
| * Copyright (C) 2016 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #include "quick_entrypoints_enum.h" |
| |
| namespace art { |
| |
| bool EntrypointRequiresStackMap(QuickEntrypointEnum trampoline) { |
| // Entrypoints that do not require a stackmap. In general leaf methods |
| // outside of the VM that are not safepoints. |
| switch (trampoline) { |
| // Listed in the same order as in quick_entrypoints_list.h. |
| case kQuickCmpgDouble: |
| case kQuickCmpgFloat: |
| case kQuickCmplDouble: |
| case kQuickCmplFloat: |
| case kQuickCos: |
| case kQuickSin: |
| case kQuickAcos: |
| case kQuickAsin: |
| case kQuickAtan: |
| case kQuickAtan2: |
| case kQuickCbrt: |
| case kQuickCosh: |
| case kQuickExp: |
| case kQuickExpm1: |
| case kQuickHypot: |
| case kQuickLog: |
| case kQuickLog10: |
| case kQuickNextAfter: |
| case kQuickSinh: |
| case kQuickTan: |
| case kQuickTanh: |
| case kQuickFmod: |
| case kQuickL2d: |
| case kQuickFmodf: |
| case kQuickL2f: |
| case kQuickD2iz: |
| case kQuickF2iz: |
| case kQuickIdivmod: |
| case kQuickD2l: |
| case kQuickF2l: |
| case kQuickLdiv: |
| case kQuickLmod: |
| case kQuickLmul: |
| case kQuickShlLong: |
| case kQuickShrLong: |
| case kQuickUshrLong: |
| return false; |
| |
| // TODO: Remove these entrypoints now that MIPS support was removed. |
| /* Used by mips for 64bit volatile load/stores. */ |
| case kQuickA64Load: |
| case kQuickA64Store: |
| return false; |
| |
| default: |
| return true; |
| } |
| } |
| |
| bool EntrypointCanTriggerGC(QuickEntrypointEnum entrypoint) { |
| switch (entrypoint) { |
| // Listed in the same order as in quick_entrypoints_list.h. |
| case kQuickCmpgDouble: |
| case kQuickCmpgFloat: |
| case kQuickCmplDouble: |
| case kQuickCmplFloat: |
| case kQuickCos: |
| case kQuickSin: |
| case kQuickAcos: |
| case kQuickAsin: |
| case kQuickAtan: |
| case kQuickAtan2: |
| case kQuickCbrt: |
| case kQuickCosh: |
| case kQuickExp: |
| case kQuickExpm1: |
| case kQuickHypot: |
| case kQuickLog: |
| case kQuickLog10: |
| case kQuickNextAfter: |
| case kQuickSinh: |
| case kQuickTan: |
| case kQuickTanh: |
| case kQuickFmod: |
| case kQuickL2d: |
| case kQuickFmodf: |
| case kQuickL2f: |
| case kQuickD2iz: |
| case kQuickF2iz: |
| case kQuickIdivmod: |
| case kQuickD2l: |
| case kQuickF2l: |
| case kQuickLdiv: |
| case kQuickLmod: |
| case kQuickLmul: |
| case kQuickShlLong: |
| case kQuickShrLong: |
| case kQuickUshrLong: |
| return false; |
| |
| // TODO: Remove these entrypoints now that MIPS support was removed. |
| /* Used by mips for 64bit volatile load/stores. */ |
| case kQuickA64Load: |
| case kQuickA64Store: |
| return false; |
| |
| default: |
| return true; |
| } |
| } |
| |
| } // namespace art |