summaryrefslogtreecommitdiff
path: root/user/firefox-esr/ppc32-fix.patch
blob: b4103c65f0141fcaf4bb02ce3898f8ca8d5270b3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
--- firefox-68.1.0/xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_linux.cpp
+++ firefox-68.1.0/xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_linux.cpp
@@ -45,11 +45,8 @@ invoke_copy_to_stack(uint32_t* d,
     uint64_t tempu64;
 
     for(uint32_t i = 0; i < paramCount; i++, s++) {
-        if(s->IsPtrData()) {
-            if(s->type == nsXPTType::T_JSVAL)
-                tempu32 = (uint32_t) &s->ptr;
-            else
-                tempu32 = (uint32_t) s->ptr;
+        if(s->IsIndirect()) {
+            tempu32 = (uint32_t) &s->val;
         }
         else {
             switch(s->type) {
@@ -70,7 +67,7 @@ invoke_copy_to_stack(uint32_t* d,
             }
         }
 
-        if (!s->IsPtrData() && s->type == nsXPTType::T_DOUBLE) {
+        if (!s->IsIndirect() && s->type == nsXPTType::T_DOUBLE) {
 #ifndef __NO_FPRS__
             if (fpr < FPR_COUNT)
                 fpregs[fpr++]    = s->val.d;
@@ -88,7 +85,7 @@ invoke_copy_to_stack(uint32_t* d,
                 d += 2;
             }
         }
-        else if (!s->IsPtrData() && s->type == nsXPTType::T_FLOAT) {
+        else if (!s->IsIndirect() && s->type == nsXPTType::T_FLOAT) {
 #ifndef __NO_FPRS__
             if (fpr < FPR_COUNT)
                 fpregs[fpr++]   = s->val.f; // if passed in registers, floats are promoted to doubles
@@ -99,7 +96,7 @@ invoke_copy_to_stack(uint32_t* d,
             else
                 *((float*) d++) = s->val.f;
         }
-        else if (!s->IsPtrData() && (s->type == nsXPTType::T_I64
+        else if (!s->IsIndirect() && (s->type == nsXPTType::T_I64
                                      || s->type == nsXPTType::T_U64)) {
             if (gpr & 1) gpr++; // longlongs are aligned in odd/even register pairs, eg. r5/r6
             if ((gpr + 1) < GPR_COUNT) {