Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset af6cad4 in mainline


Ignore:
Timestamp:
2009-10-26T15:26:01Z (11 years ago)
Author:
Martin Decky <martin@…>
Branches:
master
Children:
c638c07
Parents:
d7365604
Message:

emulate method reentrancy via counting the multiplicity of bindings

File:
1 edited

Legend:

Unmodified
Added
Removed
  • contrib/arch/hadlbppp.py

    rd7365604 raf6cad4  
    409409        return result
    410410
    411 def dump_frame(frame, outdir, var, archf):
     411def dump_frame(directed_binds, frame, outdir, var, archf):
    412412        "Dump Behavior Protocol of a given frame"
    413413       
     
    443443                        iface = get_iface(provides['iface'])
    444444                        if (not iface is None):
     445                                binds = directed_binds['%s.%s' % (var, provides['iface'])]
     446                                if (not binds is None):
     447                                        cnt = len(binds)
     448                                else:
     449                                        cnt = 1
     450                               
    445451                                if ('protocol' in iface):
    446                                         protocols.append(extend_bp(outname, iface['protocol'], iface['name']))
     452                                        proto = extend_bp(outname, iface['protocol'], iface['name'])
     453                                        for _ in range(0, cnt):
     454                                                protocols.append(proto)
     455                               
    447456                                for protocol in inherited_protocols(iface):
    448                                         protocols.append(extend_bp(outname, protocol, iface['name']))
     457                                        proto = extend_bp(outname, protocol, iface['name'])
     458                                        for _ in range(0, cnt):
     459                                                protocols.append(proto)
    449460                        else:
    450461                                print "%s: Provided interface '%s' is undefined" % (frame['name'], provides['iface'])
     
    639650                        break
    640651       
     652        directed_binds = direct_binds(flatten_binds(binds, delegates, subsumes))
     653       
    641654        outname = os.path.join(outdir, "%s.archbp" % arch['name'])
    642655        if ((opt_bp) or (opt_ebp)):
     
    648661       
    649662        for inst in insts:
    650                 dump_frame(inst['frame'], outdir, inst['var'], outf)
    651        
    652         directed_binds = direct_binds(flatten_binds(binds, delegates, subsumes))
     663                dump_frame(directed_binds, inst['frame'], outdir, inst['var'], outf)
    653664       
    654665        for dst, src in directed_binds.items():
Note: See TracChangeset for help on using the changeset viewer.