Mesa (master): mapi: Store alias entry instead of alias name.

Chia-I Wu olv at kemper.freedesktop.org
Fri Dec 24 09:34:22 UTC 2010


Module: Mesa
Branch: master
Commit: 86d29eab48b4ec8a972eec8a2a8179b5386a069e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=86d29eab48b4ec8a972eec8a2a8179b5386a069e

Author: Chia-I Wu <olv at lunarg.com>
Date:   Wed Dec 15 03:33:30 2010 +0800

mapi: Store alias entry instead of alias name.

An entry can hold more info than plain name.

---

 src/mapi/mapi/mapi_abi.py |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/mapi/mapi/mapi_abi.py b/src/mapi/mapi/mapi_abi.py
index 3a87266..c295574 100644
--- a/src/mapi/mapi/mapi_abi.py
+++ b/src/mapi/mapi/mapi_abi.py
@@ -166,10 +166,13 @@ def abi_parse(filename):
         # post-process attributes
         if attrs['alias']:
             try:
-                ent = entry_dict[attrs['alias']]
-                slot = ent.slot
+                alias = entry_dict[attrs['alias']]
             except KeyError:
                 raise Exception('failed to alias %s' % attrs['alias'])
+            if alias.alias:
+                raise Exception('recursive alias %s' % ent.name)
+            slot = alias.slot
+            attrs['alias'] = alias
         else:
             slot = next_slot
             next_slot += 1
@@ -194,7 +197,7 @@ def abi_parse(filename):
             raise Exception('entries are not ordered by slots')
         if entries[i].alias:
             raise Exception('first entry of slot %d aliases %s'
-                    % (slot, entries[i].alias))
+                    % (slot, entries[i].alias.name))
         while i < len(entries) and entries[i].slot == slot:
             i += 1
     if i < len(entries):
@@ -374,7 +377,6 @@ class ABIPrinter(object):
 
     def c_asm_gcc(self, prefix):
         asm = []
-        to_name = None
 
         asm.append('__asm__(')
         for ent in self.entries:
@@ -385,11 +387,11 @@ class ABIPrinter(object):
 
             if ent.alias:
                 asm.append('".globl %s\\n"' % (name))
-                asm.append('".set %s, %s\\n"' % (name, to_name))
+                asm.append('".set %s, %s\\n"' % (name,
+                    prefix + ent.alias.name))
             else:
                 asm.append('STUB_ASM_ENTRY("%s")"\\n"' % (name))
                 asm.append('"\\t"STUB_ASM_CODE("%d")"\\n"' % (ent.slot))
-                to_name = name
         asm.append(');')
 
         return "\n".join(asm)




More information about the mesa-commit mailing list