[m-rev.] for review: software transactional memory

Julien Fischer juliensf at csse.unimelb.edu.au
Wed Feb 27 15:33:59 AEDT 2008


On Mon, 25 Feb 2008, Zoltan Somogyi wrote:

> Provide compiler support for Software Transactional Memory through the new
> atomic goal. This work was done by Leon Mika; I merely brought it up to date,
> resolved conflicts, and cleaned up a few things. There are still several
> aspects that are as yet incomplete.
>
> library/ops.m:
> 	Add the operators needed for the syntax of atomic scopes.
>
> library/stm_builtin.m:
> 	Add the builtin operations needed for the implementation of atomic
> 	goals.
>
> compiler/hlds_goal.m:
> 	Add a new HLDS goal type, which represents an atomic goal and its
> 	possible fallbacks (in case an earlier goal throws an exception).
>
> 	Rename the predicate goal_is_atomic as goal_expr_has_subgoals,
> 	since now its old name would be misleading.
>
> compiler/prog_data.m:
> compiler/prog_item.m:
> 	Add a parse tree representation of the new kind of goal.
>
> compiler/prog_io_goal.m:
> 	Parse the new kind of goal.
>
> compiler/add_clause.m:
> 	Translate atomic goals from parse tree form to HLDS.
>
> compiler/typecheck.m:
> compiler/typecheck_errors.m:
> 	Do type checking of atomic goals.
>
> compiler/modes.m:
> 	Do mode checking of atomic goals, and determine whether they are nested
> 	or not.
>
> compiler/unique_modes.m:
> 	Do unique mode checking of atomic goals.
>
> compiler/stm_expand.m:
> 	New module to expand atomic goals into sequences of simpler goals.
>
> library/stm_builtin.m:
> 	Add the primitives needed by the transformation.
>
> 	Improve the existing debugging support.
>
> mdbcomp/prim_data.m:
> 	Add utility functions to allow stm_expand.m to refer to modules in the
> 	library.
>
> mdbcomp/program_representation.m:
> 	Expand the goal_path type to allow the representation of components of
> 	atomic goals.
>
> compiler/notes/compiler_design.html:
> 	Document the new module.
>
> compiler/transform_hlds.m:
> 	Include the new module in the compiler.
>
> compiler/mercury_compile.m:
> 	Invoke the STM transformation.
>
> compiler/hlds_module.m:
> 	Add an auxiliary counter used by the STM transformation.
>
> compiler/hlds_pred.m:
> 	Add a new predicate origin: the STM transformation.
>
> compiler/modules.m:
> 	Import the STM builtin module automatically if the module contains any
> 	atomic goals.
>

...

> compiler/delay_partial_inst.m:

Peter Wang will need to take a look at the XXXs in this one.

>
> runtime/mercury_stm.[ch]:
> 	Implement the primitives needed by the STM transformation.
>
> 	Add more debugging support to the existing primitives.
>

...

> %----------------------------------------------------------------------------%
> Index: library/term.m
> ===================================================================
> RCS file: /home/mercury/mercury1/repository/mercury/library/term.m,v
> retrieving revision 1.129
> diff -u -b -r1.129 term.m
> --- library/term.m	15 Feb 2008 02:27:04 -0000	1.129
> +++ library/term.m	16 Feb 2008 07:27:00 -0000
> @@ -59,7 +59,7 @@
> :- type term    ==  term(generic).
> :- type var     ==  var(generic).
>
> -:- func get_term_context(term) = term.context.
> +:- func get_term_context(term(T)) = term.context.
>
> %-----------------------------------------------------------------------------%

This change is not mentioned in the log message.

You can go ahead and commit this.

Julien.
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to:       mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions:          mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the reviews mailing list