[m-rev.] diff: exception.m fix

Zoltan Somogyi zs at cs.mu.OZ.AU
Tue Jun 29 12:08:24 AEST 2004


library/exception.m:
	Fix a bug that only showed up at very high levels of optimization,
	such as that used by jupiter during its nightly tests.

Zoltan.

cvs diff: Diffing .
Index: exception.m
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/library/exception.m,v
retrieving revision 1.90
diff -u -b -r1.90 exception.m
--- exception.m	21 Jun 2004 09:16:16 -0000	1.90
+++ exception.m	28 Jun 2004 08:01:33 -0000
@@ -1778,26 +1778,36 @@
 ** on the nondet stack, so for the purposes of doing stack traces we say
 ** they have MR_DETISM_NON, even though they are not actually nondet.
 **
-** MR_STATIC_USER_PROC_STATIC_PROC_LAYOUT(detism, slots, succip_locn,
+** The fields of the MR_EXTERN_USER_PROC_STATIC_PROC_LAYOUT macro are
+** the following:
+**
+** MR_EXTERN_USER_PROC_STATIC_PROC_LAYOUT(detism, slots, succip_locn,
 **	pred_or_func, module, name, arity, mode)
+**
+** We must use MR_EXTERN_USER_PROC_STATIC_PROC_LAYOUT instead of the
+** MR_STATIC_USER_PROC_STATIC_PROC_LAYOUT version, because with intermodule
+** optimization, the caller of builtin_catch may be inlined in other modules
+** (e.g. browser/declarative_debugger.m), and deep profiling may therefore
+** need the address of the proc_layout structure for the call's
+** call_site_static structure.
 */
 
-MR_STATIC_USER_PROC_STATIC_PROC_LAYOUT(
+MR_EXTERN_USER_PROC_STATIC_PROC_LAYOUT(
 	MR_DETISM_NON, MR_PROC_NO_SLOT_COUNT, -1,
 	MR_PREDICATE, exception, builtin_catch, 3, 0);
-MR_STATIC_USER_PROC_STATIC_PROC_LAYOUT(
+MR_EXTERN_USER_PROC_STATIC_PROC_LAYOUT(
 	MR_DETISM_NON, MR_PROC_NO_SLOT_COUNT, -1,
 	MR_PREDICATE, exception, builtin_catch, 3, 1);
-MR_STATIC_USER_PROC_STATIC_PROC_LAYOUT(
+MR_EXTERN_USER_PROC_STATIC_PROC_LAYOUT(
 	MR_DETISM_NON, MR_PROC_NO_SLOT_COUNT, -1,
 	MR_PREDICATE, exception, builtin_catch, 3, 2);
-MR_STATIC_USER_PROC_STATIC_PROC_LAYOUT(
+MR_EXTERN_USER_PROC_STATIC_PROC_LAYOUT(
 	MR_DETISM_NON, MR_PROC_NO_SLOT_COUNT, -1,
 	MR_PREDICATE, exception, builtin_catch, 3, 3);
-MR_STATIC_USER_PROC_STATIC_PROC_LAYOUT(
+MR_EXTERN_USER_PROC_STATIC_PROC_LAYOUT(
 	MR_DETISM_NON, MR_PROC_NO_SLOT_COUNT, -1,
 	MR_PREDICATE, exception, builtin_catch, 3, 4);
-MR_STATIC_USER_PROC_STATIC_PROC_LAYOUT(
+MR_EXTERN_USER_PROC_STATIC_PROC_LAYOUT(
 	MR_DETISM_NON, MR_PROC_NO_SLOT_COUNT, -1,
 	MR_PREDICATE, exception, builtin_catch, 3, 5);
 
--------------------------------------------------------------------------
mercury-reviews mailing list
post:  mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the reviews mailing list