128 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
| /*
 | |
|  * 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
 |