Changeset 75061 in vbox for trunk/src/libs/xpcom18a4
- Timestamp:
- Oct 25, 2018 10:44:02 AM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 126112
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/libs/xpcom18a4/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_x86_64_linux.cpp
r1 r75061 144 144 nr_stack = (nr_stack + 1) & ~1; 145 145 146 #ifndef VBOX_WITH_GCC_SANITIZER 146 147 // Load parameters to stack, if necessary 147 148 PRUint64 *stack = (PRUint64 *) __builtin_alloca(nr_stack * 8); 149 #else 150 typedef struct { PRUint64 stack[20]; } methodStack; 151 if (nr_stack > 20) 152 return NS_ERROR_CALL_FAILED; 153 methodStack stack; 154 #endif 148 155 PRUint64 gpregs[GPR_COUNT]; 149 156 double fpregs[FPR_COUNT]; 157 #ifndef VBOX_WITH_GCC_SANITIZER 150 158 invoke_copy_to_stack(stack, paramCount, params, gpregs, fpregs); 159 #else 160 invoke_copy_to_stack(stack.stack, paramCount, params, gpregs, fpregs); 161 #endif 151 162 152 163 // Load FPR registers from fpregs[] … … 206 217 methodAddress = *((PRUint64 *)methodAddress); 207 218 219 #ifndef VBOX_WITH_GCC_SANITIZER 208 220 typedef PRUint32 (*Method)(PRUint64, PRUint64, PRUint64, PRUint64, PRUint64, PRUint64); 209 221 PRUint32 result = ((Method)methodAddress)(a0, a1, a2, a3, a4, a5); 222 #else 223 typedef PRUint32 (*Method)(PRUint64, PRUint64, PRUint64, PRUint64, PRUint64, PRUint64, methodStack); 224 PRUint32 result = ((Method)methodAddress)(a0, a1, a2, a3, a4, a5, stack); 225 #endif 210 226 return result; 211 227 }
Note:
See TracChangeset
for help on using the changeset viewer.