[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

diffs for stubs in mozilla



Here are the diffs to the xptcall section. I removed the 'static' from
the function definitions because otherwise they were optimised away.
For the perl script, I basically have it write the inline assembly
code instead of leaving it to the macros in the source files (since
the new mangled labels have the function length encoded within).
This really is a job for perl.

Hope this helps,
Michael.

Index: xptcinvoke_linux_alpha.cpp
===================================================================
RCS file: /cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_alpha.cpp,v
retrieving revision 1.2
diff -u -r1.2 xptcinvoke_linux_alpha.cpp
--- xptcinvoke_linux_alpha.cpp	1999/11/06 03:39:07	1.2
+++ xptcinvoke_linux_alpha.cpp	2001/07/06 09:15:24
@@ -27,11 +27,11 @@
 #include "xptcprivate.h"
 
 /* Prototype specifies unmangled function name and disables unused warning */
-static void
+void
 invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
 __asm__("invoke_copy_to_stack") __attribute__((unused));
 
-static void
+void
 invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
 {
     const PRUint8 NUM_ARG_REGS = 6-1;        // -1 for "this" pointer
Index: xptcstubs_linux_alpha.cpp
===================================================================
RCS file: /cvsroot/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_alpha.cpp,v
retrieving revision 1.2
diff -u -r1.2 xptcstubs_linux_alpha.cpp
--- xptcstubs_linux_alpha.cpp	1999/11/06 03:39:10	1.2
+++ xptcstubs_linux_alpha.cpp	2001/07/06 09:15:25
@@ -27,11 +27,13 @@
 #include "xptcprivate.h"
 
 /* Prototype specifies unmangled function name and disables unused warning */
-static nsresult
+
+nsresult
 PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
 __asm__("PrepareAndDispatch") __attribute__((unused));
+
 
-static nsresult
+nsresult
 PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
 {
     const PRUint8 PARAM_BUFFER_COUNT = 16;
Index: genstubs.pl
===================================================================
RCS file: /cvsroot/mozilla/xpcom/reflect/xptcall/public/genstubs.pl,v
retrieving revision 1.5
diff -u -r1.5 genstubs.pl
--- genstubs.pl	2001/05/19 00:03:00	1.5
+++ genstubs.pl	2001/07/06 09:17:00
@@ -61,8 +61,30 @@
 print OUTFILE "/* includes ",$entry_count," stub entries, and ",
               $sentinel_count," sentinel entries */\n\n";
 
-for($i = 0; $i < $entry_count; $i++) {
-    print OUTFILE "STUB_ENTRY(",$i+3,")\n";
+for($i = 3; $i < ($entry_count+3); $i++) {
+#    print OUTFILE "STUB_ENTRY(",$i+3,")\n";
+# _ZN14nsXPTCStubBase6Stub29Ev #"_ZN14ns"class+length+method+"Ev"
+$x = length($i) + 4; #get method name length
+print OUTFILE <<__BARF__;
+__asm__( \
+    "#### Stub$i ####\\n" \\
+".text\\n\\t" \\
+    ".align 5\\n\\t" \\
+    ".globl _ZN14nsXPTCStubBase${x}Stub${i}Ev\\n\\t" \\
+    ".ent _ZN14nsXPTCStubBase${x}Stub${i}Ev\\n" \\
+"_ZN14nsXPTCStubBase${x}Stub${i}Ev:\\n\\t" \\
+    ".frame \$30,0,\$26,0\\n\\t" \\
+    "ldgp \$29,0(\$27)\\n" \\
+"\$_ZN14nsXPTCStubBase${x}Stub${i}Ev..ng:\\n\\t" \\
+    ".prologue 1\\n\\t" \\
+    "lda \$1,$i\\n\\t" \\
+    "br \$31,\$SharedStub..ng\\n\\t" \\
+    ".end _ZN14nsXPTCStubBase${x}Stub${i}Ev" \\
+    );
+
+;
+
+__BARF__
 }
 
 for($i = 0; $i < $sentinel_count; $i++) {
-- 
This message may have passed through thousands of machines throughout
the entire civilised world. It might have cost the net hundreds, if not
thousands of dollars to send everywhere.
+++ Michael Stroucken +++ michael@stroucken.org +++ DEC Alpha Powered +++

Attachment: pgpD1iq0GOBzy.pgp
Description: PGP signature


Reply to: