harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mikhail Fursov" <mike.fur...@gmail.com>
Subject Re: [drlvm] the big soup of VM properties (HARMONY-1626)
Date Tue, 10 Oct 2006 09:03:34 GMT
Dmitry,
I support your idea to clean up VM properties code. I do not like the
current state of the implementation too.

But I have a couple of questions:

1) Who is responsible to deallocate memory for hidden properties? E.g. the
same "const char*"  value could be allocated with malloc or new or could be
the static value.

2) By adding hidden properties you introduce a new style of communication
between components. Why limit hidden properties with "const char*" values?
Are there any problems with void* ?


On 10/10/06, Geir Magnusson Jr. <geir@pobox.com> wrote:
>
> Inline
>
> Dmitry Yershov wrote:
>
> [snip]
> >
> >                        VM properties proposal
> >                        ======================
> >
> >     The general purpose of VM Properties subcomponent is to provide
> > centralized access to a common properties table. A property is meant
> > as a pair of <key> and <value>. The properties stored in VM Properties
> > table represent configuration settings for a separate component (such
> > as VMCore, GC, JIT etc) or for the whole system. Another use case for
> > the properties is communication between different components.
> >
> >                             Requirements
> >                             ============
> >
> >     1) The <key> and <value> are represented as string (i.e. char*).
>
> and I propose that on each operation, a copy is made, so that the caller
>    frees the  string that they got or gave.
>
> >     2) NULL values are allowed.
> >     3) VM Properties subcomponent exports its interface as part of VM
> >        Core.
> >     4) There are two kind of properties
> >           * Public properties are properties visible both to all VM
> >             components and to Java applications (by means of
> >             java.lang.System.getProperties() method).
> >           * Hidden properties are used for VM components communication
> >             only, not accessible from Java side.
> >     5) There is a way to set hidden properties through non standard
> >        command line option (   -XDefine<key>=<value>).
> >     6) There is a way to get a list of defined properties which keys
> >        begin with a particular prefix.
> >     7) Properties table should be thread safe.
> >
> >                       VM Properties usage scenario
> >                       ============================
> >
> >     Components can define properties and lookup them by name. When
> > setting the property it can be marked either public or hidden. A
> > property should be marked as hidden if it is intended internal usage
> > only. Public properties are supposed to be visible from Java side also.
> > In the same time it is possible to obtain a list of all public
> properties
> > to pass them to Java side.
> >
> >                        Defined Interface functions
> >                        ===========================
> >
> >     void set_property(const char * key, const char * value) - Sets the
> >     public property. NULL values are supported.
> >
> >     void set_hidden_property(const char * key, const char * value) -
> Sets
> >     the hidden property. NULL values are supported.
> >
> >     const char * get_property(const char * key) - Returns the value of
> the
> >     property if it has been set by set_property function. Otherwise
> returns
> >     NULL.
> >
> >     const char * get_hidden_property(const char * key) - Returns the
> value
> >     of the property if it has been set by set_hidden_property function.
> >     Otherwise returns NULL.
> >
> >     bool is_property_set(const char * key, bool hidden) - Checks if the
> >     property is set.
> >
> >     void unset_property(const char * key, bool hidden) - Unsets the
> property.
> >
> >     char * * get_public_property_keys() - Returns an array of keys for
> all
> >     public properties set.
> >
> >     char * * get_properties_staring_with(const char * prefix, bool
> hidden) -
> >     Returns an array of keys for all properties set whose keys start
> with
> >     the prefix specified.
>
> 1) if this is a C++ class, lets drop the word 'property'
> 2) Don't hardcode 'hidden' into the API, as we may have other types down
> the road.  Make it an argument
>
>    set( key, val, type )
>    get( key, type )
>    is_set(key)
>    unset(key)
>    get_keys(type)
>    ....
>
> >
> >
> > ------------------------------------------------------------------------
> >
> > ---------------------------------------------------------------------
> > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> > For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>
>


-- 
Mikhail Fursov

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message