Files
mercury/compiler/commit_gen.m
Zoltan Somogyi be5b71861b Convert almost all the compiler modules to use . instead of __ as
Estimated hours taken: 6
Branches: main

compiler/*.m:
	Convert almost all the compiler modules to use . instead of __ as
	the module qualifier.

	In some cases, change the names of predicates and types to make them
	meaningful without the module qualifier. In particular, most of the
	types that used to be referred to with an "mlds__" prefix have been
	changed to have a "mlds_" prefix instead of changing the prefix to
	"mlds.".

	There are no algorithmic changes.
2006-03-17 01:40:46 +00:00

93 lines
3.3 KiB
Mathematica

%---------------------------------------------------------------------------%
% vim: ft=mercury ts=4 sw=4 et
%---------------------------------------------------------------------------%
% Copyright (C) 1997-1998, 2003-2006 The University of Melbourne.
% This file may only be copied under the terms of the GNU General
% Public License - see the file COPYING in the Mercury distribution.
%---------------------------------------------------------------------------%
%
% File: commit_gen.m.
% Main authors: conway, fjh, zs.
%
% The predicates of this module generate code for performing commits.
%
%---------------------------------------------------------------------------%
:- module ll_backend.commit_gen.
:- interface.
:- import_module hlds.code_model.
:- import_module hlds.hlds_goal.
:- import_module ll_backend.code_info.
:- import_module ll_backend.llds.
%---------------------------------------------------------------------------%
:- pred generate_commit(add_trail_ops::in, code_model::in,
hlds_goal::in, code_tree::out, code_info::in, code_info::out) is det.
%---------------------------------------------------------------------------%
%---------------------------------------------------------------------------%
:- implementation.
:- import_module libs.compiler_util.
:- import_module libs.tree.
:- import_module ll_backend.code_gen.
:- import_module std_util.
:- import_module string.
%---------------------------------------------------------------------------%
generate_commit(AddTrailOps, OuterCodeModel, Goal, Code, !Info) :-
Goal = _ - InnerGoalInfo,
goal_info_get_code_model(InnerGoalInfo, InnerCodeModel),
(
OuterCodeModel = model_det,
(
InnerCodeModel = model_det,
code_gen.generate_goal(InnerCodeModel, Goal, Code, !Info)
;
InnerCodeModel = model_semi,
unexpected(this_file, "generate_commit: " ++
"semidet model in det context")
;
InnerCodeModel = model_non,
code_info.prepare_for_det_commit(AddTrailOps, CommitInfo,
PreCommit, !Info),
code_gen.generate_goal(InnerCodeModel, Goal, GoalCode, !Info),
code_info.generate_det_commit(CommitInfo, Commit, !Info),
Code = tree(PreCommit, tree(GoalCode, Commit))
)
;
OuterCodeModel = model_semi,
(
InnerCodeModel = model_det,
code_gen.generate_goal(InnerCodeModel, Goal, Code, !Info)
;
InnerCodeModel = model_semi,
code_gen.generate_goal(InnerCodeModel, Goal, Code, !Info)
;
InnerCodeModel = model_non,
code_info.prepare_for_semi_commit(AddTrailOps, CommitInfo,
PreCommit, !Info),
code_gen.generate_goal(InnerCodeModel, Goal, GoalCode, !Info),
code_info.generate_semi_commit(CommitInfo, Commit, !Info),
Code = tree(PreCommit, tree(GoalCode, Commit))
)
;
OuterCodeModel = model_non,
code_gen.generate_goal(InnerCodeModel, Goal, Code, !Info)
).
%---------------------------------------------------------------------------%
:- func this_file = string.
this_file = "commit_gen.m".
%---------------------------------------------------------------------------%
:- end_module commit_gen.
%---------------------------------------------------------------------------%