[m-dev.] [reuse] diff: remove scc for sr_split
Nancy Mazur
Nancy.Mazur at cs.kuleuven.ac.be
Fri Oct 13 19:58:35 AEDT 2000
Hi,
===================================================================
Estimated hours taken: 0.5
sr_split.m:
As the reprocessing of the goals has moved to another pass,
you don't need to run over the strongly connected components to
create correct reuse versions of the procedures.
Index: sr_split.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/Attic/sr_split.m,v
retrieving revision 1.1.2.4
diff -u -r1.1.2.4 sr_split.m
--- sr_split.m 2000/10/13 08:32:04 1.1.2.4
+++ sr_split.m 2000/10/13 08:56:07
@@ -34,26 +34,15 @@
:- implementation.
:- import_module std_util, require, list, set, map.
-:- import_module dependency_graph, hlds_pred.
+:- import_module hlds_pred.
:- import_module hlds_goal, prog_data, hlds_data, prog_util.
:- import_module sr_data.
sr_split__create_multiple_versions( VirginHLDS, ReuseHLDS, HLDS) -->
% compute the strongly connected components
- { module_info_ensure_dependency_info( ReuseHLDS, ReuseHLDS1) },
- { module_info_get_maybe_dependency_info( ReuseHLDS1, MaybeDepInfo) } ,
- (
- { MaybeDepInfo = yes(DepInfo) }
- ->
- { hlds_dependency_info_get_dependency_ordering( DepInfo,
- DepOrdering ) },
- run_with_dependencies( DepOrdering, ReuseHLDS1,
- VirginHLDS, HLDS1),
- { reprocess_all_goals( HLDS1, HLDS ) }
- ;
- { error("(sr_split) create_multiple_versions: no dependency info") }
- ).
+ { create_versions( VirginHLDS, ReuseHLDS, HLDS1) },
+ { reprocess_all_goals( HLDS1, HLDS ) }.
% reprocess each of the procedures to make sure that all calls
% to reuse preds are correct.
@@ -99,29 +88,39 @@
).
-:- pred run_with_dependencies( dependency_ordering, module_info, module_info,
- module_info, io__state, io__state).
-:- mode run_with_dependencies( in, in, in, out, di, uo) is det.
-
-run_with_dependencies( Deps, ReuseHLDSin, VirginHLDS, HLDSout) -->
- list__foldl2( run_with_dependency(VirginHLDS), Deps,
- ReuseHLDSin, HLDSout ).
-
-:- pred run_with_dependency( module_info, list(pred_proc_id),
- module_info, module_info,
- io__state, io__state).
-:- mode run_with_dependency( in, in, in, out, di, uo ) is det.
-
-run_with_dependency( VirginHLDS, SCC , HLDSin, HLDSout ) -->
- { list__foldl( create_versions(VirginHLDS),
- SCC,
- HLDSin,
- HLDSout ) }.
+:- pred create_versions( module_info, module_info, module_info).
+:- mode create_versions( in, in, out) is det.
+
+create_versions( VirginHLDS, ReuseHLDS, HLDS) :-
+ module_info_predids( ReuseHLDS, PredIds),
+ list__foldl(
+ create_versions_2(VirginHLDS),
+ PredIds,
+ ReuseHLDS,
+ HLDS).
+
+:- pred create_versions_2( module_info::in, pred_id::in,
+ module_info::in, module_info::out) is det.
+
+create_versions_2( VirginHLDS, PredId , HLDS0, HLDS ) :-
+ module_info_pred_info( HLDS0, PredId, PredInfo0 ),
+ pred_info_procids( PredInfo0, ProcIds ),
+ list__foldl(
+ pred( Id::in, H0::in, H::out ) is det :-
+ (
+ create_versions_3( VirginHLDS,
+ proc(PredId, Id),
+ H0, H)
+ ),
+ ProcIds,
+ HLDS0,
+ HLDS
+ ).
-:- pred create_versions( module_info::in, pred_proc_id::in,
+:- pred create_versions_3( module_info::in, pred_proc_id::in,
module_info::in, module_info::out) is det.
-create_versions( VirginHLDS, PredProcId, WorkingHLDS, HLDS):-
+create_versions_3( VirginHLDS, PredProcId, WorkingHLDS, HLDS):-
module_info_pred_proc_info( WorkingHLDS, PredProcId,
PredInfo0, ProcInfo0),
proc_info_reuse_information( ProcInfo0, Memo),
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to: mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions: mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------
More information about the developers
mailing list