]>
Commit | Line | Data |
---|---|---|
1 | --- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_alpha.cpp.orig Fri Sep 28 22:12:52 2001 | |
2 | +++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_alpha.cpp Tue Jun 24 15:32:39 2003 | |
3 | @@ -188,6 +188,50 @@ | |
4 | * nsresult nsXPTCStubBase::Stub##n() | |
5 | * Sets register $1 to "methodIndex" and jumps to SharedStub. | |
6 | */ | |
7 | +#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */ | |
8 | +// gcc3 mangling tends to insert the length of the method name | |
9 | +#define STUB_ENTRY(n) \ | |
10 | +__asm__( \ | |
11 | + "#### Stub"#n" ####\n" \ | |
12 | +".text\n\t" \ | |
13 | + ".align 5\n\t" \ | |
14 | + ".if " #n " < 10\n\t" \ | |
15 | + ".globl _ZN14nsXPTCStubBase5Stub" #n "Ev\n\t" \ | |
16 | + ".ent _ZN14nsXPTCStubBase5Stub" #n "Ev\n" \ | |
17 | +"_ZN14nsXPTCStubBase5Stub" #n "Ev:\n\t" \ | |
18 | + ".elseif " #n " < 100\n\t" \ | |
19 | + ".globl _ZN14nsXPTCStubBase6Stub" #n "Ev\n\t" \ | |
20 | + ".ent _ZN14nsXPTCStubBase6Stub" #n "Ev\n" \ | |
21 | +"_ZN14nsXPTCStubBase6Stub" #n "Ev:\n\t" \ | |
22 | + ".elseif " #n " < 1000\n\t" \ | |
23 | + ".globl _ZN14nsXPTCStubBase7Stub" #n "Ev\n\t" \ | |
24 | + ".ent _ZN14nsXPTCStubBase7Stub" #n "Ev\n" \ | |
25 | +"_ZN14nsXPTCStubBase7Stub" #n "Ev:\n\t" \ | |
26 | + ".else\n\t" \ | |
27 | + ".err \"stub number " #n " >= 1000 not yet supported\"\n\t" \ | |
28 | + ".endif\n\t" \ | |
29 | + ".frame $30,0,$26,0\n\t" \ | |
30 | + "ldgp $29,0($27)\n" \ | |
31 | + ".if " #n " < 10\n\t" \ | |
32 | +"$_ZN14nsXPTCStubBase5Stub" #n "Ev..ng:\n\t" \ | |
33 | + ".elseif " #n " < 100\n\t" \ | |
34 | +"$_ZN14nsXPTCStubBase6Stub" #n "Ev..ng:\n\t" \ | |
35 | + ".else\n\t" \ | |
36 | +"$_ZN14nsXPTCStubBase7Stub" #n "Ev..ng:\n\t" \ | |
37 | + ".endif\n\t" \ | |
38 | + ".prologue 1\n\t" \ | |
39 | + "lda $1,"#n"\n\t" \ | |
40 | + ".if " #n " < 10\n\t" \ | |
41 | + "br $31,$SharedStub..ng\n\t" \ | |
42 | + ".end _ZN14nsXPTCStubBase5Stub" #n "Ev\n\t" \ | |
43 | + ".elseif " #n " < 100\n\t" \ | |
44 | + "br $31,$SharedStub..ng\n\t" \ | |
45 | + ".end _ZN14nsXPTCStubBase6Stub" #n "Ev\n\t" \ | |
46 | + ".else\n\t" \ | |
47 | + "br $31,$SharedStub..ng\n\t" \ | |
48 | + ".end _ZN14nsXPTCStubBase7Stub" #n "Ev\n\t" \ | |
49 | + ".endif"); | |
50 | +#else | |
51 | #define STUB_ENTRY(n) \ | |
52 | __asm__( \ | |
53 | "#### Stub"#n" ####\n" \ | |
54 | @@ -204,6 +248,7 @@ | |
55 | "br $31,$SharedStub..ng\n\t" \ | |
56 | ".end Stub"#n"__14nsXPTCStubBase" \ | |
57 | ); | |
58 | +#endif | |
59 | ||
60 | #define SENTINEL_ENTRY(n) \ | |
61 | nsresult nsXPTCStubBase::Sentinel##n() \ | |
62 | --- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_alpha.cpp.orig Fri Sep 28 22:12:51 2001 | |
63 | +++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_alpha.cpp Wed Jun 25 14:08:20 2003 | |
64 | @@ -163,7 +163,11 @@ | |
65 | "bis $16,$16,$1\n\t" /* load "this" */ | |
66 | "ldq $2,16($15)\n\t" /* load "methodIndex" */ | |
67 | "ldq $1,0($1)\n\t" /* load vtable */ | |
68 | +#if defined(__GXX_ABI_VERSION) && __GXX_ABI_VERSION >= 100 /* G++ V3 ABI */ | |
69 | + "s8addq $2,0,$2\n\t" | |
70 | +#else | |
71 | "s8addq $2,16,$2\n\t" /* vtable index = "methodIndex" * 8 + 16 */ | |
72 | +#endif | |
73 | "addq $1,$2,$1\n\t" | |
74 | "ldq $27,0($1)\n\t" /* load address of function */ | |
75 | "jsr $26,($27),0\n\t" /* call virtual function */ |