1*b146d3b3SDamjan Jovanovic /************************************************************** 2*b146d3b3SDamjan Jovanovic * 3*b146d3b3SDamjan Jovanovic * Licensed to the Apache Software Foundation (ASF) under one 4*b146d3b3SDamjan Jovanovic * or more contributor license agreements. See the NOTICE file 5*b146d3b3SDamjan Jovanovic * distributed with this work for additional information 6*b146d3b3SDamjan Jovanovic * regarding copyright ownership. The ASF licenses this file 7*b146d3b3SDamjan Jovanovic * to you under the Apache License, Version 2.0 (the 8*b146d3b3SDamjan Jovanovic * "License"); you may not use this file except in compliance 9*b146d3b3SDamjan Jovanovic * with the License. You may obtain a copy of the License at 10*b146d3b3SDamjan Jovanovic * 11*b146d3b3SDamjan Jovanovic * http://www.apache.org/licenses/LICENSE-2.0 12*b146d3b3SDamjan Jovanovic * 13*b146d3b3SDamjan Jovanovic * Unless required by applicable law or agreed to in writing, 14*b146d3b3SDamjan Jovanovic * software distributed under the License is distributed on an 15*b146d3b3SDamjan Jovanovic * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b146d3b3SDamjan Jovanovic * KIND, either express or implied. See the License for the 17*b146d3b3SDamjan Jovanovic * specific language governing permissions and limitations 18*b146d3b3SDamjan Jovanovic * under the License. 19*b146d3b3SDamjan Jovanovic * 20*b146d3b3SDamjan Jovanovic *************************************************************/ 21*b146d3b3SDamjan Jovanovic 22*b146d3b3SDamjan Jovanovic 23*b146d3b3SDamjan Jovanovic 24*b146d3b3SDamjan Jovanovic // MARKER(update_precomp.py): autogen include statement, do not remove 25*b146d3b3SDamjan Jovanovic #include "precompiled_bridges.hxx" 26*b146d3b3SDamjan Jovanovic 27*b146d3b3SDamjan Jovanovic #include "abi.hxx" 28*b146d3b3SDamjan Jovanovic 29*b146d3b3SDamjan Jovanovic #include <rtl/ustring.hxx> 30*b146d3b3SDamjan Jovanovic 31*b146d3b3SDamjan Jovanovic using namespace x86_64; 32*b146d3b3SDamjan Jovanovic return_in_hidden_param(typelib_TypeDescriptionReference * pTypeRef)33*b146d3b3SDamjan Jovanovicbool x86_64::return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef ) 34*b146d3b3SDamjan Jovanovic { 35*b146d3b3SDamjan Jovanovic switch ( pTypeRef->eTypeClass ) 36*b146d3b3SDamjan Jovanovic { 37*b146d3b3SDamjan Jovanovic case typelib_TypeClass_VOID: 38*b146d3b3SDamjan Jovanovic return false; 39*b146d3b3SDamjan Jovanovic case typelib_TypeClass_CHAR: 40*b146d3b3SDamjan Jovanovic case typelib_TypeClass_BOOLEAN: 41*b146d3b3SDamjan Jovanovic case typelib_TypeClass_BYTE: 42*b146d3b3SDamjan Jovanovic case typelib_TypeClass_SHORT: 43*b146d3b3SDamjan Jovanovic case typelib_TypeClass_UNSIGNED_SHORT: 44*b146d3b3SDamjan Jovanovic case typelib_TypeClass_LONG: 45*b146d3b3SDamjan Jovanovic case typelib_TypeClass_UNSIGNED_LONG: 46*b146d3b3SDamjan Jovanovic case typelib_TypeClass_HYPER: 47*b146d3b3SDamjan Jovanovic case typelib_TypeClass_UNSIGNED_HYPER: 48*b146d3b3SDamjan Jovanovic case typelib_TypeClass_ENUM: 49*b146d3b3SDamjan Jovanovic return false; 50*b146d3b3SDamjan Jovanovic case typelib_TypeClass_FLOAT: 51*b146d3b3SDamjan Jovanovic return false; 52*b146d3b3SDamjan Jovanovic case typelib_TypeClass_DOUBLE: 53*b146d3b3SDamjan Jovanovic return false; 54*b146d3b3SDamjan Jovanovic case typelib_TypeClass_STRING: 55*b146d3b3SDamjan Jovanovic case typelib_TypeClass_TYPE: 56*b146d3b3SDamjan Jovanovic case typelib_TypeClass_ANY: 57*b146d3b3SDamjan Jovanovic case typelib_TypeClass_TYPEDEF: 58*b146d3b3SDamjan Jovanovic case typelib_TypeClass_UNION: 59*b146d3b3SDamjan Jovanovic case typelib_TypeClass_SEQUENCE: 60*b146d3b3SDamjan Jovanovic case typelib_TypeClass_ARRAY: 61*b146d3b3SDamjan Jovanovic case typelib_TypeClass_INTERFACE: 62*b146d3b3SDamjan Jovanovic return true; 63*b146d3b3SDamjan Jovanovic case typelib_TypeClass_STRUCT: 64*b146d3b3SDamjan Jovanovic case typelib_TypeClass_EXCEPTION: 65*b146d3b3SDamjan Jovanovic { 66*b146d3b3SDamjan Jovanovic typelib_TypeDescription * pTypeDescr = 0; 67*b146d3b3SDamjan Jovanovic TYPELIB_DANGER_GET( &pTypeDescr, pTypeRef ); 68*b146d3b3SDamjan Jovanovic 69*b146d3b3SDamjan Jovanovic /* If the struct is larger than 8 bytes, pass it on the stack. */ 70*b146d3b3SDamjan Jovanovic if ( pTypeDescr->nSize > 8 ) 71*b146d3b3SDamjan Jovanovic { 72*b146d3b3SDamjan Jovanovic TYPELIB_DANGER_RELEASE( pTypeDescr ); 73*b146d3b3SDamjan Jovanovic return false; 74*b146d3b3SDamjan Jovanovic } 75*b146d3b3SDamjan Jovanovic else 76*b146d3b3SDamjan Jovanovic { 77*b146d3b3SDamjan Jovanovic TYPELIB_DANGER_RELEASE( pTypeDescr ); 78*b146d3b3SDamjan Jovanovic return true; 79*b146d3b3SDamjan Jovanovic } 80*b146d3b3SDamjan Jovanovic } 81*b146d3b3SDamjan Jovanovic 82*b146d3b3SDamjan Jovanovic default: 83*b146d3b3SDamjan Jovanovic #if OSL_DEBUG_LEVEL > 1 84*b146d3b3SDamjan Jovanovic OSL_TRACE( "Unhandled case: pType->eTypeClass == %d\n", pTypeRef->eTypeClass ); 85*b146d3b3SDamjan Jovanovic #endif 86*b146d3b3SDamjan Jovanovic OSL_ASSERT(0); 87*b146d3b3SDamjan Jovanovic } 88*b146d3b3SDamjan Jovanovic return 0; /* Never reached. */ 89*b146d3b3SDamjan Jovanovic } 90*b146d3b3SDamjan Jovanovic 91