+++ /dev/null
-Objects have:
-Collection of Flags
- Flags have type/name associated with them
- Are either present or not present
-
-Assumptions:
-Task parameters can't be modified
-
-How do we handle new object allocation?
-Idea #1: Set flags at allocation
- Only allow flag setting at exit for parameters
-
-Non parameter variables:
-1) Type must contain flags
-2) Apply flag additions to all states
-
-Tags operations:
-create_tag operation(type)
-
-tag name=new tag(type);
-
-associate_with_tag operation(object, tag)
-
-Dispatch:
-after flag status, allow tag status...
-each tag state is of the form: Type(name)
-
-Other approach:
-Tag sets: {x, y, z, ... in R
-
-Allow additions/removals of tuples in taskexit:
-remove <x, y, z, ...> from R
-add <x, y> to R
-
-Allow addition of new tuples in object allocation
-add <new, y> to R
-------------------------------------------------------------------------------
-
-
-
-
-Collection of Tags
- Tags have type/name associated with them
- Also have UID associated with them
- Two basic types:
- Ordered: Initial/Next / Preserves Sequencing
- Non-ordered: New / Groups items together
-
-----------------------------------------------------------------------
-Tasks:
-Have list of parameters w/ flag/tag specifications
-Flag/Tag transitions at task exit
------------------------------------------------------------------------
-Problems:
-How do we efficiently do task dispatch?
-
-Idea:
-Flags - efficiently
-Build static state transition diagram : explore full space for now
-Then for each state transition we consider:
-1) What task activations have we added
-2) What task activations have we removed
-Collapse state transition diagram to
-
-
-Tags - search once we match a flag
-
-
-
-Input:
-trigger role specification for tasks:
-role mutator operation:
-role definition:
-
-Generate:
-Role transition diagram
-
-
-Initial features:
-methods
-structs
-type system
-
-Language features:
-Single Inheritance
-Virtual methods
-Objects
-
-object metastate:
-1. flags: flag role1
-2. tags: tag tag1
-
-tag operations:
-tag tag1=new tag;
-tag tag2=incrementtag(tag tag1);
-tag tag3=no tag;
-
-metastate operations:
-
-task foo(type1 o1{role1||role2}, type2 o2{role3}) {
-
- exit(o1{role1'=false},o2{role3'=false},onew{role4=true});
-}
-----------------------------------------------------------------
-----------------------------------------------------------------
-
-Initial design:
-----------------------------------------------------------------
-
-Provide runtime with:
-1) List of tasks
- a) Task names
- b) Parameter types
- c) Flag settings
-
-2) List of flags for each type
-
-3) Flag transition calls