Wed, 18 Sep 2013 14:34:56 -0700
8024342: PPC64 (part 111): Support for C calling conventions that require 64-bit ints.
Summary: Some platforms, as ppc and s390x/zArch require that 32-bit ints are passed as 64-bit values to C functions. This change adds support to adapt the signature and to issue proper casts to c2-compiled stubs. The functions are used in generate_native_wrapper(). Adapt signature used by the compiler as in PhaseIdealLoop::intrinsify_fill().
Reviewed-by: kvn
duke@435 | 1 | /* |
kvn@3882 | 2 | * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. |
duke@435 | 3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
duke@435 | 4 | * |
duke@435 | 5 | * This code is free software; you can redistribute it and/or modify it |
duke@435 | 6 | * under the terms of the GNU General Public License version 2 only, as |
duke@435 | 7 | * published by the Free Software Foundation. |
duke@435 | 8 | * |
duke@435 | 9 | * This code is distributed in the hope that it will be useful, but WITHOUT |
duke@435 | 10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
duke@435 | 11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
duke@435 | 12 | * version 2 for more details (a copy is included in the LICENSE file that |
duke@435 | 13 | * accompanied this code). |
duke@435 | 14 | * |
duke@435 | 15 | * You should have received a copy of the GNU General Public License version |
duke@435 | 16 | * 2 along with this work; if not, write to the Free Software Foundation, |
duke@435 | 17 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
duke@435 | 18 | * |
trims@1907 | 19 | * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
trims@1907 | 20 | * or visit www.oracle.com if you need additional information or have any |
trims@1907 | 21 | * questions. |
duke@435 | 22 | * |
duke@435 | 23 | */ |
duke@435 | 24 | |
duke@435 | 25 | // The giant table of Node classes. |
duke@435 | 26 | // One entry per class, sorted by class name. |
duke@435 | 27 | |
duke@435 | 28 | macro(AbsD) |
duke@435 | 29 | macro(AbsF) |
duke@435 | 30 | macro(AbsI) |
duke@435 | 31 | macro(AddD) |
duke@435 | 32 | macro(AddF) |
duke@435 | 33 | macro(AddI) |
duke@435 | 34 | macro(AddL) |
duke@435 | 35 | macro(AddP) |
duke@435 | 36 | macro(Allocate) |
duke@435 | 37 | macro(AllocateArray) |
duke@435 | 38 | macro(AndI) |
duke@435 | 39 | macro(AndL) |
rasbold@604 | 40 | macro(AryEq) |
duke@435 | 41 | macro(AtanD) |
duke@435 | 42 | macro(Binary) |
duke@435 | 43 | macro(Bool) |
duke@435 | 44 | macro(BoxLock) |
duke@435 | 45 | macro(ReverseBytesI) |
duke@435 | 46 | macro(ReverseBytesL) |
never@1831 | 47 | macro(ReverseBytesUS) |
never@1831 | 48 | macro(ReverseBytesS) |
duke@435 | 49 | macro(CProj) |
duke@435 | 50 | macro(CallDynamicJava) |
duke@435 | 51 | macro(CallJava) |
duke@435 | 52 | macro(CallLeaf) |
duke@435 | 53 | macro(CallLeafNoFP) |
duke@435 | 54 | macro(CallRuntime) |
duke@435 | 55 | macro(CallStaticJava) |
duke@435 | 56 | macro(CastII) |
duke@435 | 57 | macro(CastX2P) |
duke@435 | 58 | macro(CastP2X) |
duke@435 | 59 | macro(CastPP) |
duke@435 | 60 | macro(Catch) |
duke@435 | 61 | macro(CatchProj) |
duke@435 | 62 | macro(CheckCastPP) |
duke@435 | 63 | macro(ClearArray) |
duke@435 | 64 | macro(ConstraintCast) |
duke@435 | 65 | macro(CMoveD) |
duke@435 | 66 | macro(CMoveF) |
duke@435 | 67 | macro(CMoveI) |
duke@435 | 68 | macro(CMoveL) |
duke@435 | 69 | macro(CMoveP) |
kvn@599 | 70 | macro(CMoveN) |
coleenp@548 | 71 | macro(CmpN) |
duke@435 | 72 | macro(CmpD) |
duke@435 | 73 | macro(CmpD3) |
duke@435 | 74 | macro(CmpF) |
duke@435 | 75 | macro(CmpF3) |
duke@435 | 76 | macro(CmpI) |
duke@435 | 77 | macro(CmpL) |
duke@435 | 78 | macro(CmpL3) |
duke@435 | 79 | macro(CmpLTMask) |
duke@435 | 80 | macro(CmpP) |
duke@435 | 81 | macro(CmpU) |
duke@435 | 82 | macro(CompareAndSwapI) |
duke@435 | 83 | macro(CompareAndSwapL) |
duke@435 | 84 | macro(CompareAndSwapP) |
coleenp@548 | 85 | macro(CompareAndSwapN) |
roland@4106 | 86 | macro(GetAndAddI) |
roland@4106 | 87 | macro(GetAndAddL) |
roland@4106 | 88 | macro(GetAndSetI) |
roland@4106 | 89 | macro(GetAndSetL) |
roland@4106 | 90 | macro(GetAndSetP) |
roland@4106 | 91 | macro(GetAndSetN) |
duke@435 | 92 | macro(Con) |
coleenp@548 | 93 | macro(ConN) |
roland@4159 | 94 | macro(ConNKlass) |
duke@435 | 95 | macro(ConD) |
duke@435 | 96 | macro(ConF) |
duke@435 | 97 | macro(ConI) |
duke@435 | 98 | macro(ConL) |
duke@435 | 99 | macro(ConP) |
duke@435 | 100 | macro(Conv2B) |
duke@435 | 101 | macro(ConvD2F) |
duke@435 | 102 | macro(ConvD2I) |
duke@435 | 103 | macro(ConvD2L) |
duke@435 | 104 | macro(ConvF2D) |
duke@435 | 105 | macro(ConvF2I) |
duke@435 | 106 | macro(ConvF2L) |
duke@435 | 107 | macro(ConvI2D) |
duke@435 | 108 | macro(ConvI2F) |
duke@435 | 109 | macro(ConvI2L) |
duke@435 | 110 | macro(ConvL2D) |
duke@435 | 111 | macro(ConvL2F) |
duke@435 | 112 | macro(ConvL2I) |
duke@435 | 113 | macro(CosD) |
duke@435 | 114 | macro(CountedLoop) |
duke@435 | 115 | macro(CountedLoopEnd) |
twisti@1210 | 116 | macro(CountLeadingZerosI) |
twisti@1210 | 117 | macro(CountLeadingZerosL) |
twisti@1210 | 118 | macro(CountTrailingZerosI) |
twisti@1210 | 119 | macro(CountTrailingZerosL) |
duke@435 | 120 | macro(CreateEx) |
coleenp@548 | 121 | macro(DecodeN) |
roland@4159 | 122 | macro(DecodeNKlass) |
duke@435 | 123 | macro(DivD) |
duke@435 | 124 | macro(DivF) |
duke@435 | 125 | macro(DivI) |
duke@435 | 126 | macro(DivL) |
duke@435 | 127 | macro(DivMod) |
duke@435 | 128 | macro(DivModI) |
duke@435 | 129 | macro(DivModL) |
kvn@4479 | 130 | macro(EncodeISOArray) |
coleenp@548 | 131 | macro(EncodeP) |
roland@4159 | 132 | macro(EncodePKlass) |
duke@435 | 133 | macro(ExpD) |
duke@435 | 134 | macro(FastLock) |
duke@435 | 135 | macro(FastUnlock) |
duke@435 | 136 | macro(Goto) |
duke@435 | 137 | macro(Halt) |
duke@435 | 138 | macro(If) |
duke@435 | 139 | macro(IfFalse) |
duke@435 | 140 | macro(IfTrue) |
duke@435 | 141 | macro(Initialize) |
duke@435 | 142 | macro(JProj) |
duke@435 | 143 | macro(Jump) |
duke@435 | 144 | macro(JumpProj) |
duke@435 | 145 | macro(LShiftI) |
duke@435 | 146 | macro(LShiftL) |
duke@435 | 147 | macro(LoadB) |
twisti@1059 | 148 | macro(LoadUB) |
twisti@993 | 149 | macro(LoadUS) |
duke@435 | 150 | macro(LoadD) |
duke@435 | 151 | macro(LoadD_unaligned) |
duke@435 | 152 | macro(LoadF) |
duke@435 | 153 | macro(LoadI) |
duke@435 | 154 | macro(LoadKlass) |
kvn@599 | 155 | macro(LoadNKlass) |
duke@435 | 156 | macro(LoadL) |
duke@435 | 157 | macro(LoadL_unaligned) |
duke@435 | 158 | macro(LoadPLocked) |
duke@435 | 159 | macro(LoadP) |
coleenp@548 | 160 | macro(LoadN) |
duke@435 | 161 | macro(LoadRange) |
duke@435 | 162 | macro(LoadS) |
duke@435 | 163 | macro(Lock) |
duke@435 | 164 | macro(LogD) |
duke@435 | 165 | macro(Log10D) |
duke@435 | 166 | macro(Loop) |
kvn@2877 | 167 | macro(LoopLimit) |
duke@435 | 168 | macro(Mach) |
duke@435 | 169 | macro(MachProj) |
duke@435 | 170 | macro(MaxI) |
duke@435 | 171 | macro(MemBarAcquire) |
roland@3047 | 172 | macro(MemBarAcquireLock) |
duke@435 | 173 | macro(MemBarCPUOrder) |
duke@435 | 174 | macro(MemBarRelease) |
roland@3047 | 175 | macro(MemBarReleaseLock) |
duke@435 | 176 | macro(MemBarVolatile) |
roland@3392 | 177 | macro(MemBarStoreStore) |
duke@435 | 178 | macro(MergeMem) |
duke@435 | 179 | macro(MinI) |
duke@435 | 180 | macro(ModD) |
duke@435 | 181 | macro(ModF) |
duke@435 | 182 | macro(ModI) |
duke@435 | 183 | macro(ModL) |
duke@435 | 184 | macro(MoveI2F) |
duke@435 | 185 | macro(MoveF2I) |
duke@435 | 186 | macro(MoveL2D) |
duke@435 | 187 | macro(MoveD2L) |
duke@435 | 188 | macro(MulD) |
duke@435 | 189 | macro(MulF) |
rasbold@580 | 190 | macro(MulHiL) |
duke@435 | 191 | macro(MulI) |
duke@435 | 192 | macro(MulL) |
duke@435 | 193 | macro(Multi) |
duke@435 | 194 | macro(NegD) |
duke@435 | 195 | macro(NegF) |
duke@435 | 196 | macro(NeverBranch) |
duke@435 | 197 | macro(Opaque1) |
duke@435 | 198 | macro(Opaque2) |
duke@435 | 199 | macro(OrI) |
duke@435 | 200 | macro(OrL) |
duke@435 | 201 | macro(PCTable) |
duke@435 | 202 | macro(Parm) |
duke@435 | 203 | macro(PartialSubtypeCheck) |
duke@435 | 204 | macro(Phi) |
twisti@1078 | 205 | macro(PopCountI) |
twisti@1078 | 206 | macro(PopCountL) |
duke@435 | 207 | macro(PowD) |
kvn@3052 | 208 | macro(PrefetchAllocation) |
duke@435 | 209 | macro(PrefetchRead) |
duke@435 | 210 | macro(PrefetchWrite) |
duke@435 | 211 | macro(Proj) |
duke@435 | 212 | macro(RShiftI) |
duke@435 | 213 | macro(RShiftL) |
duke@435 | 214 | macro(Region) |
duke@435 | 215 | macro(Rethrow) |
duke@435 | 216 | macro(Return) |
duke@435 | 217 | macro(Root) |
duke@435 | 218 | macro(RoundDouble) |
duke@435 | 219 | macro(RoundFloat) |
duke@435 | 220 | macro(SafePoint) |
kvn@498 | 221 | macro(SafePointScalarObject) |
duke@435 | 222 | macro(SCMemProj) |
duke@435 | 223 | macro(SinD) |
duke@435 | 224 | macro(SqrtD) |
duke@435 | 225 | macro(Start) |
duke@435 | 226 | macro(StartOSR) |
duke@435 | 227 | macro(StoreB) |
duke@435 | 228 | macro(StoreC) |
duke@435 | 229 | macro(StoreCM) |
duke@435 | 230 | macro(StorePConditional) |
kvn@855 | 231 | macro(StoreIConditional) |
duke@435 | 232 | macro(StoreLConditional) |
duke@435 | 233 | macro(StoreD) |
duke@435 | 234 | macro(StoreF) |
duke@435 | 235 | macro(StoreI) |
duke@435 | 236 | macro(StoreL) |
duke@435 | 237 | macro(StoreP) |
coleenp@548 | 238 | macro(StoreN) |
roland@4159 | 239 | macro(StoreNKlass) |
duke@435 | 240 | macro(StrComp) |
cfang@1116 | 241 | macro(StrEquals) |
cfang@1116 | 242 | macro(StrIndexOf) |
duke@435 | 243 | macro(SubD) |
duke@435 | 244 | macro(SubF) |
duke@435 | 245 | macro(SubI) |
duke@435 | 246 | macro(SubL) |
duke@435 | 247 | macro(TailCall) |
duke@435 | 248 | macro(TailJump) |
duke@435 | 249 | macro(TanD) |
duke@435 | 250 | macro(ThreadLocal) |
duke@435 | 251 | macro(Unlock) |
duke@435 | 252 | macro(URShiftI) |
duke@435 | 253 | macro(URShiftL) |
duke@435 | 254 | macro(XorI) |
duke@435 | 255 | macro(XorL) |
duke@435 | 256 | macro(Vector) |
duke@435 | 257 | macro(AddVB) |
duke@435 | 258 | macro(AddVS) |
duke@435 | 259 | macro(AddVI) |
duke@435 | 260 | macro(AddVL) |
duke@435 | 261 | macro(AddVF) |
duke@435 | 262 | macro(AddVD) |
duke@435 | 263 | macro(SubVB) |
duke@435 | 264 | macro(SubVS) |
duke@435 | 265 | macro(SubVI) |
duke@435 | 266 | macro(SubVL) |
duke@435 | 267 | macro(SubVF) |
duke@435 | 268 | macro(SubVD) |
kvn@4001 | 269 | macro(MulVS) |
kvn@4001 | 270 | macro(MulVI) |
duke@435 | 271 | macro(MulVF) |
duke@435 | 272 | macro(MulVD) |
duke@435 | 273 | macro(DivVF) |
duke@435 | 274 | macro(DivVD) |
kvn@4134 | 275 | macro(LShiftCntV) |
kvn@4134 | 276 | macro(RShiftCntV) |
duke@435 | 277 | macro(LShiftVB) |
duke@435 | 278 | macro(LShiftVS) |
duke@435 | 279 | macro(LShiftVI) |
kvn@4001 | 280 | macro(LShiftVL) |
kvn@3882 | 281 | macro(RShiftVB) |
kvn@3882 | 282 | macro(RShiftVS) |
kvn@3882 | 283 | macro(RShiftVI) |
kvn@4001 | 284 | macro(RShiftVL) |
kvn@4001 | 285 | macro(URShiftVB) |
kvn@4001 | 286 | macro(URShiftVS) |
kvn@4001 | 287 | macro(URShiftVI) |
kvn@4001 | 288 | macro(URShiftVL) |
duke@435 | 289 | macro(AndV) |
duke@435 | 290 | macro(OrV) |
duke@435 | 291 | macro(XorV) |
kvn@3882 | 292 | macro(LoadVector) |
kvn@3882 | 293 | macro(StoreVector) |
duke@435 | 294 | macro(Pack) |
duke@435 | 295 | macro(PackB) |
duke@435 | 296 | macro(PackS) |
duke@435 | 297 | macro(PackI) |
duke@435 | 298 | macro(PackL) |
duke@435 | 299 | macro(PackF) |
duke@435 | 300 | macro(PackD) |
kvn@3882 | 301 | macro(Pack2L) |
kvn@3882 | 302 | macro(Pack2D) |
kvn@3882 | 303 | macro(ReplicateB) |
kvn@3882 | 304 | macro(ReplicateS) |
kvn@3882 | 305 | macro(ReplicateI) |
kvn@3882 | 306 | macro(ReplicateL) |
kvn@3882 | 307 | macro(ReplicateF) |
kvn@3882 | 308 | macro(ReplicateD) |
duke@435 | 309 | macro(Extract) |
duke@435 | 310 | macro(ExtractB) |
kvn@3882 | 311 | macro(ExtractUB) |
kvn@3882 | 312 | macro(ExtractC) |
duke@435 | 313 | macro(ExtractS) |
duke@435 | 314 | macro(ExtractI) |
duke@435 | 315 | macro(ExtractL) |
duke@435 | 316 | macro(ExtractF) |
duke@435 | 317 | macro(ExtractD) |