incubator-kato-spec mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Griffiths <david.griffi...@gmail.com>
Subject Re: Replacing ImagePointer references in the Java Runtime API - first pass
Date Mon, 11 Jan 2010 11:46:26 GMT
Some people take the view that you shouldn't store type info in an
object and that you should instead have a separate subinterface for
each type. I'm not one of those people but just thought I'd mention it
:)

Cheers,

Dave

On Mon, Jan 11, 2010 at 10:20 AM, Steve Poole <spoole167@googlemail.com> wrote:
> The Handle interface below is at the core of my proposal for a replacement
> for places where ImagePointer is used in the JavaRuntime API.    Though it's
> not all of it -  the JavaRuntime interface is also updated:
>
> The getObjectByAddress(long) method is replaced with a
> getObjectByHandle(handle) method.
>
> A new  Handle createHandle(EntityType type,long reference) method has been
> added to allow for the creation of these handles from external form data.
> EntityType is an enum of Java Runtime API types  (currently only javaobject,
> javaclass, monitor)
>
> These changes are in the codebase and seem to work ok.  We do need to
> resolve the getAddress() method on JavaLocation to determine what it's form
> should be.
>
> Also - what else could we call this other than Handle?  (I don't really want
> to use the pointer word but handle seems so old fashioned :-))
>
> ---
> javax.tools.diagnostics.runtime.java.Handle :
>
> /**
>  * Describes a smart pointer that can be used to extract
>  * a reference to an entity within a JavaRuntime instance
>  * and can be presented to the same JavaRuntime instance to
>  * reconstitute a semantically equivilent version of the original
>  * entity.
>  *
>  * The handle is expected to be used to facilitate round tripping
>  * where identity information about the entity needs to recorded outside of
> a
>  * the analysing program (perhaps in a database) and then, at some later
>  * stage , the original object needs to be recovered.
>  *
>  *
>  */
> public interface Handle {
>
>    /**
>     * Returns an implementation specific reference number that
>     * can be used (in conjunction with a type specification) to
>     * recreate the relevant API entity from a dump.
>     *
>     * @return reference number
>     */
>    public long getAddress();
>
>    /**
>     * Returns an enumeration that indicates the type of object that
>     * this handle refers to. Never returns null.
>     *
>     */
>    public EntityType getType();
>
> }
>
>
> --
> Steve
>

Mime
View raw message