You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
3.1 KiB
128 lines
3.1 KiB
/*
|
|
* 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
|