[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Is it a bug in Hierarchy?
Hi Ole and Plam,
Thanks, that's right, I was suspecting the iterator may not return the
right order (but it can), actually I caught other bugs in my code.
Cheers,
====================
Feng Qian fqian@sable.mcgill.ca
On Tue, 4 Dec 2001, Ole Friis Ostergaard wrote:
> Hi Feng!
>
> What should be wrong with that piece of code? As far as I can see, it
> does the right thing.
>
> The catch is that the object _must_ be of the specified class, not any
> subclass. If the object can be of a subclass of the given class, then
> you will have to look in all subclasses and see if any of these define
> their own method of the same signature.
>
> Hope this helps.
>
>
> Feng QIAN wrote:
> >
> > Hi, following is a piece code in Hierarchy.java resolving virtual method
> > calls. Can it do the right thing? I think probably it is wrong.
> >
> > // Questions about method invocation.
> >
> > /** Given an object of actual type C (o = new C()), returns the method which
> > on an o.f() invocation.
> > */
> >
> > public SootMethod resolveConcreteDispatch(SootClass concreteType,
> > SootMethod m)
> > {
> > checkState();
> >
> > if (concreteType.isInterface())
> > throw new RuntimeException("class needed!");
> >
> > Iterator it = getSuperclassesOfIncluding(concreteType).iterator();
> > String methodSig = m.getSubSignature();
> >
> > while (it.hasNext())
> > {
> > SootClass c = (SootClass)it.next();
> > if (c.declaresMethod(methodSig))
> > return c.getMethod(methodSig);
> > }
> >
> > throw new RuntimeException("could not resolve concrete
> > dispatch!\nType: "
> >
> > }
> >
> > ====================
> > Feng Qian fqian@sable.mcgill.ca
>
> --
> Ole Friis Østergaard <olef@daimi.au.dk>
> For unge til at føle ansvaret tynge
> som andet end dårlig samvittighed
> (Steffen Brandt)
>