[m-rev.] diff: get library compiling in ilc grade

Peter Ross peter.ross at miscrit.be
Wed Feb 6 03:29:07 AEDT 2002


Hi,


===================================================================


Estimated hours taken: 1
Branches: main

Various changes to get the library to compile in the ilc grade.

library/deconstruct.m:
    Add a missing private_builtin module_specifier to the calls to
    sorry.

library/float.m:
library/int.m:
library/math.m:
library/rtti_implementation.m:
    Add missing promise_pures to the foreign_procs.

library/private_builtin.m:
    Add a predicate imp which is a do nothing predicate which is impure.
    This is used to make calls to sorry/1 impure when needed.

library/type_desc.m:
    Add calls to private_builtin__sorry/1 where needed.
    Get namespace qualifiers correct for calls to
    ML_call_rtti_compare_type_infos.

runtime/mercury_il.il:
    Add get_ftn_ptr_heap_pointer_unify and get_ftn_ptr_heap_pointer_compare.

Index: library/deconstruct.m
===================================================================
RCS file: /home/mercury1/repository/mercury/library/deconstruct.m,v
retrieving revision 1.2
diff -u -r1.2 deconstruct.m
--- library/deconstruct.m	4 Feb 2002 05:22:48 -0000	1.2
+++ library/deconstruct.m	5 Feb 2002 16:21:21 -0000
@@ -394,11 +394,11 @@
 }").
 
 functor_dna(_Term::in, _Functor::out, _Arity::out) :-
-	sorry("deconstruct__functor_dna/3").
+	private_builtin__sorry("deconstruct__functor_dna/3").
 functor_can(Term::in, Functor::out, Arity::out) :-
 	rtti_implementation__deconstruct(Term, Functor, Arity, _Arguments).
 functor_idcc(_Term::in, _Functor::out, _Arity::out) :-
-	sorry("deconstruct__functor_idcc/3").
+	private_builtin__sorry("deconstruct__functor_idcc/3").
 
 %-----------------------------------------------------------------------------%
 
@@ -535,19 +535,19 @@
 }").
 
 univ_arg_dna(_Term::in, _Index::in, _Arg::out) :-
-	sorry("deconstruct__univ_arg_dna/3").
+	private_builtin__sorry("deconstruct__univ_arg_dna/3").
 univ_arg_can(Term::in, Index::in, Arg::out) :-
 	rtti_implementation__deconstruct(Term, _Functor, _Arity, Arguments),
 	list__index0(Arguments, Index, Arg).
 univ_arg_idcc(_Term::in, _Index::in, _Arg::out) :-
-	sorry("deconstruct__univ_arg_idcc/3").
+	private_builtin__sorry("deconstruct__univ_arg_idcc/3").
 
 univ_named_arg_dna(_Term::in, _Name::in, _Arg::out) :-
-	sorry("deconstruct__univ_named_arg_dna/3").
+	private_builtin__sorry("deconstruct__univ_named_arg_dna/3").
 univ_named_arg_can(_Term::in, _Name::in, _Arg::out) :-
-	sorry("deconstruct__univ_named_arg_can/3").
+	private_builtin__sorry("deconstruct__univ_named_arg_can/3").
 univ_named_arg_idcc(_Term::in, _Name::in, _Arg::out) :-
-	sorry("deconstruct__univ_named_arg_idcc/3").
+	private_builtin__sorry("deconstruct__univ_named_arg_idcc/3").
 
 %-----------------------------------------------------------------------------%
 
@@ -711,22 +711,22 @@
 }").
 
 deconstruct_dna(_Term::in, _Functor::out, _Arity::out, _Arguments::out) :-
-	sorry("deconstuct__deconstruct_dna/4").
+	private_builtin__sorry("deconstuct__deconstruct_dna/4").
 deconstruct_can(Term::in, Functor::out, Arity::out, Arguments::out) :-
 	rtti_implementation__deconstruct(Term, Functor, Arity, Arguments).
 deconstruct_idcc(_Term::in, _Functor::out, _Arity::out, _Arguments::out) :-
-	sorry("deconstuct__deconstruct_idcc/4").
+	private_builtin__sorry("deconstuct__deconstruct_idcc/4").
 
 limited_deconstruct_dna(_Term::in, _MaxArity::in,
 		_Functor::out, _Arity::out, _Arguments::out) :-
-	sorry("deconstuct__limited_deconstruct_dna/5").
+	private_builtin__sorry("deconstuct__limited_deconstruct_dna/5").
 limited_deconstruct_can(Term::in, MaxArity::in,
 		Functor::out, Arity::out, Arguments::out) :-
 	rtti_implementation__deconstruct(Term, Functor, Arity, Arguments),
 	Arity =< MaxArity.
 limited_deconstruct_idcc(_Term::in, _MaxArity::in,
 		_Functor::out, _Arity::out, _Arguments::out) :-
-	sorry("deconstuct__limited_deconstruct_idcc/5").
+	private_builtin__sorry("deconstuct__limited_deconstruct_idcc/5").
 
 %-----------------------------------------------------------------------------%
 
Index: library/float.m
===================================================================
RCS file: /home/mercury1/repository/mercury/library/float.m,v
retrieving revision 1.40
diff -u -r1.40 float.m
--- library/float.m	20 Jan 2002 07:32:20 -0000	1.40
+++ library/float.m	5 Feb 2002 16:21:22 -0000
@@ -238,7 +238,7 @@
 ").
 
 :- pragma foreign_proc("MC++", domain_checks,
-		[thread_safe], "
+		[thread_safe, promise_pure], "
 #if ML_OMIT_MATH_DOMAIN_CHECKS
 	SUCCESS_INDICATOR = FALSE;
 #else
Index: library/int.m
===================================================================
RCS file: /home/mercury1/repository/mercury/library/int.m,v
retrieving revision 1.81
diff -u -r1.81 int.m
--- library/int.m	20 Jan 2002 07:32:20 -0000	1.81
+++ library/int.m	5 Feb 2002 16:21:23 -0000
@@ -327,7 +327,7 @@
 ").
 
 :- pragma foreign_proc("MC++", domain_checks,
-		[thread_safe], "
+		[thread_safe, promise_pure], "
 #if ML_OMIT_MATH_DOMAIN_CHECKS
 	SUCCESS_INDICATOR = FALSE;
 #else
Index: library/math.m
===================================================================
RCS file: /home/mercury1/repository/mercury/library/math.m,v
retrieving revision 1.36
diff -u -r1.36 math.m
--- library/math.m	20 Jan 2002 07:32:22 -0000	1.36
+++ library/math.m	5 Feb 2002 16:21:26 -0000
@@ -256,7 +256,7 @@
 ").
 
 :- pragma foreign_proc("MC++", domain_checks,
-		[thread_safe], "
+		[thread_safe, promise_pure], "
 #if ML_OMIT_MATH_DOMAIN_CHECKS
 	SUCCESS_INDICATOR = FALSE;
 #else
@@ -363,7 +363,7 @@
 	SquareRoot = sqrt(X);
 ").
 :- pragma foreign_proc("C#", math__sqrt_2(X::in) = (SquareRoot::out),
-		[thread_safe], "
+		[thread_safe, promise_pure], "
 	SquareRoot = System.Math.Sqrt(X);
 ").
 
@@ -440,7 +440,7 @@
 ").
 
 :- pragma foreign_proc("C#", math__pow_2(X::in, Y::in) = (Res::out),
-		[thread_safe], "
+		[thread_safe, promise_pure], "
 	Res = System.Math.Pow(X, Y);
 ").
 
@@ -479,7 +479,7 @@
 	Log = log(X);
 ").
 :- pragma foreign_proc("C#", math__ln_2(X::in) = (Log::out),
-		[thread_safe], "
+		[thread_safe, promise_pure], "
 	Log = System.Math.Log(X);
 ").
 
@@ -504,7 +504,7 @@
 	Log10 = log10(X);
 ").
 :- pragma foreign_proc("C#", math__log10_2(X::in) = (Log10::out),
-		[thread_safe], "
+		[thread_safe, promise_pure], "
 	Log10 = System.Math.Log10(X);
 ").
 
@@ -529,7 +529,7 @@
 	Log2 = log(X) / ML_FLOAT_LN2;
 ").
 :- pragma foreign_proc("C#", math__log2_2(X::in) = (Log2::out),
-		[thread_safe], "
+		[thread_safe, promise_pure], "
 	Log2 = System.Math.Log(X) / ML_FLOAT_LN2;
 ").
 
@@ -562,7 +562,7 @@
 	Log = log(X)/log(B);
 ").
 :- pragma foreign_proc("C#", math__log_2(B::in, X::in) = (Log::out),
-		[thread_safe], "
+		[thread_safe, promise_pure], "
 	Log = System.Math.Log(X,B);
 ").
 
@@ -630,7 +630,7 @@
 	ASin = asin(X);
 ").
 :- pragma foreign_proc("C#", math__asin_2(X::in) = (ASin::out),
-		[thread_safe], "
+		[thread_safe, promise_pure], "
 	ASin = System.Math.Asin(X);
 ").
 
@@ -660,7 +660,7 @@
 	ACos = acos(X);
 ").
 :- pragma foreign_proc("C#", math__acos_2(X::in) = (ACos::out),
-		[thread_safe], "
+		[thread_safe, promise_pure], "
 	ACos = System.Math.Acos(X);
 ").
 
Index: library/private_builtin.m
===================================================================
RCS file: /home/mercury1/repository/mercury/library/private_builtin.m,v
retrieving revision 1.95
diff -u -r1.95 private_builtin.m
--- library/private_builtin.m	5 Feb 2002 09:23:22 -0000	1.95
+++ library/private_builtin.m	5 Feb 2002 16:21:27 -0000
@@ -915,16 +915,22 @@
 % Default (Mercury) implementations.
 % These should be overridden by the appropriate foreign language implementation.
 store_ticket(_Ticket::out) :-
+	impure imp,
 	sorry("private_builtin__store_ticket/1").
 reset_ticket_undo(_Ticket::in) :-
+	impure imp,
 	sorry("private_builtin__reset_ticket_undo/1").
 reset_ticket_commit(_Ticket::in) :-
+	impure imp,
 	sorry("private_builtin__reset_ticket_commit/1").
 reset_ticket_solve(_Ticket::in) :-
+	impure imp,
 	sorry("private_builtin__reset_ticket_solve/1").
 mark_ticket_stack(_TicketCounter::out) :-
+	impure imp,
 	sorry("private_builtin__mark_ticket_stack/1").
 prune_tickets_to(_TicketCounter::in) :-
+	impure imp,
 	sorry("private_builtin__prune_tickets_to/1").
 /****
 % XXX we can't give default Mercury implementations for these,
@@ -1167,6 +1173,7 @@
 % default (Mercury) implementation for gc_trace/1
 % This should be overridden by the appropriate foreign language implementation.
 gc_trace(_::in) :-
+	impure imp,
 	sorry("private_builtin__gc_trace/1").
 
 :- pragma foreign_proc("C", gc_trace(Pointer::in),
@@ -1187,6 +1194,7 @@
 % default (Mercury) implementation for free_heap/1
 % This should be overridden by the appropriate foreign language implementation.
 free_heap(_::di) :-
+	impure imp,
 	sorry("private_builtin__free_heap/1").
 
 :- pragma foreign_proc("C", free_heap(Val::di),
@@ -1196,8 +1204,10 @@
 % default (Mercury) implementations for mark_hp/1 and restore_hp/1.
 % This should be overridden by the appropriate foreign language implementation.
 mark_hp(_::out) :-
+	impure imp,
 	sorry("private_builtin__mark_hp/1").
 restore_hp(_::in) :-
+	impure imp,
 	sorry("private_builtin__restore_hp/1").
 
 :- pragma foreign_proc("C", mark_hp(SavedHeapPointer::out),
@@ -1395,7 +1405,7 @@
 {
 	mercury::runtime::Errors::fatal_error(
 		""called compare/3 for type `private_builtin:heap_pointer'"");
-	return 0;
+	return;
 }
 
 ").
@@ -1458,6 +1468,9 @@
 
 :- pred sorry(string::in) is erroneous.
 
+% imp/0 is used to make pure predicates impure.
+:- impure pred imp is det.
+
 %-----------------------------------------------------------------------------%
 
 :- implementation.
@@ -1473,6 +1486,10 @@
 sorry(PredName) :-
 	error("sorry, `" ++ PredName ++ "' not implemented\n" ++
 		"for this target language (or compiler back-end).").
+
+:- pragma foreign_proc(c, imp, [will_not_call_mercury, thread_safe], "").
+:- pragma foreign_proc(il, imp,
+		[will_not_call_mercury, thread_safe, max_stack_size(0)], "").
 
 %-----------------------------------------------------------------------------%
 %-----------------------------------------------------------------------------%
Index: library/rtti_implementation.m
===================================================================
RCS file: /home/mercury1/repository/mercury/library/rtti_implementation.m,v
retrieving revision 1.13
diff -u -r1.13 rtti_implementation.m
--- library/rtti_implementation.m	30 Jan 2002 05:08:53 -0000	1.13
+++ library/rtti_implementation.m	5 Feb 2002 16:21:29 -0000
@@ -873,7 +873,8 @@
 	det_unimplemented("new_type_info").
 
 :- pragma foreign_proc("C#",
-	new_type_info(OldTypeInfo::in, Arity::in) = (NewTypeInfo::uo), [], "
+	new_type_info(OldTypeInfo::in, Arity::in) = (NewTypeInfo::uo),
+		[promise_pure], "
 	NewTypeInfo = new object[Arity + 1];
 	System.Array.Copy(OldTypeInfo, NewTypeInfo, OldTypeInfo.Length);
 ").
@@ -888,7 +889,7 @@
 
 :- pragma foreign_proc("C#",
 	get_pti_from_arg_types(ArgTypes::in, Index::in) =
-		(ArgTypeInfo::out), [], "
+		(ArgTypeInfo::out), [promise_pure], "
 	ArgTypeInfo = ArgTypes[Index];
 ").
 
@@ -901,7 +902,8 @@
 	det_unimplemented("get_pti_from_type_info").
 
 :- pragma foreign_proc("C#",
-	get_pti_from_type_info(TypeInfo::in, Index::in) = (PTI::out), [], "
+	get_pti_from_type_info(TypeInfo::in, Index::in) = (PTI::out),
+		[promise_pure], "
 	PTI = TypeInfo[Index];
 ").
 
@@ -959,7 +961,7 @@
 
 :- pragma foreign_proc("C#",
 	get_subterm(TypeInfo::in, Term::in, Index::in,
-		TagOffset::in) = (Arg::out), [], "
+		TagOffset::in) = (Arg::out), [promise_pure], "
 	Arg = ((object[]) Term)[Index + TagOffset];
 	TypeInfo_for_T = TypeInfo;
 ").
@@ -973,7 +975,7 @@
 	semidet_unimplemented("typeinfo_is_variable").
 
 :- pragma foreign_proc("MC++",
-	typeinfo_is_variable(TypeInfo::in, VarNum::out), [], "
+	typeinfo_is_variable(TypeInfo::in, VarNum::out), [promise_pure], "
 	SUCCESS_INDICATOR = (dynamic_cast<MR_Word>(TypeInfo) == NULL);
 	if (SUCCESS_INDICATOR) {
 		VarNum = System::Convert::ToInt32(TypeInfo);
@@ -1108,14 +1110,14 @@
 	det_unimplemented("get_remote_secondary_tag").
 
 :- pragma foreign_proc("C#",
-	get_primary_tag(X::in) = (Tag::out), [], "
+	get_primary_tag(X::in) = (Tag::out), [promise_pure], "
 	// We don't look at X to find the tag, for .NET low-level data
 	// there is no primary tag, so we always return zero.
 	Tag = 0;
 ").
 
 :- pragma foreign_proc("C#",
-	get_remote_secondary_tag(X::in) = (Tag::out), [], "
+	get_remote_secondary_tag(X::in) = (Tag::out), [promise_pure], "
 	object[] data = (object[]) X;
 	Tag = (int) data[0];
 ").
@@ -1145,7 +1147,7 @@
 	det_unimplemented("ptag_index").
 
 :- pragma foreign_proc("C#",
-	ptag_index(X::in, TypeLayout::in) = (PtagEntry::out), [], "
+	ptag_index(X::in, TypeLayout::in) = (PtagEntry::out), [promise_pure], "
 	PtagEntry = (object[]) TypeLayout[X];
 ").
 
@@ -1155,7 +1157,7 @@
 	det_unimplemented("sectag_locn").
 
 :- pragma foreign_proc("C#",
-	sectag_locn(PTagEntry::in) = (SectagLocn::out), [], "
+	sectag_locn(PTagEntry::in) = (SectagLocn::out), [promise_pure], "
 	SectagLocn = mercury.runtime.LowLevelData.make_enum((int)
 		PTagEntry[(int) ptag_layout_field_nums.sectag_locn]);
 ").
@@ -1167,7 +1169,7 @@
 
 :- pragma foreign_proc("C#",
 	du_sectag_alternatives(X::in, PTagEntry::in) =
-		(FunctorDescriptor::out), [], "
+		(FunctorDescriptor::out), [promise_pure], "
 	object[] sectag_alternatives;
 	sectag_alternatives = (object []) 
 		PTagEntry[(int) ptag_layout_field_nums.sectag_alternatives];
@@ -1180,7 +1182,7 @@
 	det_unimplemented("functor_name").
 
 :- pragma foreign_proc("C#",
-	functor_name(FunctorDescriptor::in) = (Name::out), [], "
+	functor_name(FunctorDescriptor::in) = (Name::out), [promise_pure], "
 	Name = (string)
 		FunctorDescriptor[(int) du_functor_field_nums.du_functor_name];
 ").
@@ -1191,7 +1193,7 @@
 	det_unimplemented("functor_arity").
 
 :- pragma foreign_proc("C#",
-	functor_arity(FunctorDescriptor::in) = (Name::out), [], "
+	functor_arity(FunctorDescriptor::in) = (Name::out), [promise_pure], "
 	Name = (int)
 		FunctorDescriptor[(int)
 			du_functor_field_nums.du_functor_orig_arity];
@@ -1204,7 +1206,8 @@
 	det_unimplemented("functor_arg_types").
 
 :- pragma foreign_proc("C#",
-	functor_arg_types(FunctorDescriptor::in) = (ArgTypes::out), [], "
+	functor_arg_types(FunctorDescriptor::in) = (ArgTypes::out),
+		[promise_pure], "
 	ArgTypes = (object[])
 		FunctorDescriptor[(int)
 			du_functor_field_nums.du_functor_arg_types];
@@ -1217,7 +1220,8 @@
 	det_unimplemented("functor_exist_info").
 
 :- pragma foreign_proc("C#",
-	functor_exist_info(FunctorDescriptor::in) = (ExistInfo::out), [], "
+	functor_exist_info(FunctorDescriptor::in) = (ExistInfo::out),
+		[promise_pure], "
 	ExistInfo = (object[])
 		FunctorDescriptor[(int)
 			du_functor_field_nums.du_functor_exist_info];
@@ -1231,7 +1235,8 @@
 	det_unimplemented("typeinfo_locns_index").
 
 :- pragma foreign_proc("C#",
-	typeinfo_locns_index(X::in, ExistInfo::in) = (TypeInfoLocn::out), [], "
+	typeinfo_locns_index(X::in, ExistInfo::in) = (TypeInfoLocn::out),
+		[promise_pure], "
 
 	TypeInfoLocn = (object[]) ((object[]) ExistInfo[(int)
 			exist_info_field_nums.typeinfo_locns])[X];
@@ -1245,7 +1250,8 @@
 	det_unimplemented("exist_info_typeinfos_plain").
 
 :- pragma foreign_proc("C#",
-	exist_info_typeinfos_plain(ExistInfo::in) = (TypeInfosPlain::out), [], "
+	exist_info_typeinfos_plain(ExistInfo::in) = (TypeInfosPlain::out),
+		[promise_pure], "
 	TypeInfosPlain = (int)
 		ExistInfo[(int)
 			exist_info_field_nums.typeinfos_plain];
@@ -1257,7 +1263,7 @@
 	det_unimplemented("exist_info_tcis").
 
 :- pragma foreign_proc("C#",
-	exist_info_tcis(ExistInfo::in) = (TCIs::out), [], "
+	exist_info_tcis(ExistInfo::in) = (TCIs::out), [promise_pure], "
 	TCIs = (int) ExistInfo[(int)
 			exist_info_field_nums.tcis];
 ").
@@ -1272,7 +1278,7 @@
 	det_unimplemented("exist_arg_num").
 
 :- pragma foreign_proc("C#",
-	exist_arg_num(TypeInfoLocn::in) = (ArgNum::out), [], "
+	exist_arg_num(TypeInfoLocn::in) = (ArgNum::out), [promise_pure], "
 	ArgNum = (int) TypeInfoLocn[(int) exist_locn_field_nums.exist_arg_num];
 		
 ").
@@ -1283,7 +1289,7 @@
 	det_unimplemented("exist_arg_num").
 
 :- pragma foreign_proc("C#",
-	exist_offset_in_tci(TypeInfoLocn::in) = (ArgNum::out), [], "
+	exist_offset_in_tci(TypeInfoLocn::in) = (ArgNum::out), [promise_pure], "
 	ArgNum = (int)
 		TypeInfoLocn[(int) exist_locn_field_nums.exist_offset_in_tci];
 		
@@ -1295,7 +1301,8 @@
 	det_unimplemented("get_typeinfo_from_term").
 
 :- pragma foreign_proc("C#",
-	get_typeinfo_from_term(Term::in, Index::in) = (TypeInfo::out), [], "
+	get_typeinfo_from_term(Term::in, Index::in) = (TypeInfo::out),
+		[promise_pure], "
 	TypeInfo = (object[]) ((object[]) Term)[Index];
 ").
 
Index: library/type_desc.m
===================================================================
RCS file: /home/mercury1/repository/mercury/library/type_desc.m,v
retrieving revision 1.1
diff -u -r1.1 type_desc.m
--- library/type_desc.m	30 Jan 2002 05:08:56 -0000	1.1
+++ library/type_desc.m	5 Feb 2002 16:21:34 -0000
@@ -302,7 +302,7 @@
 static int MR_compare_type_info(MR_Word t1, MR_Word t2) {
 	MR_Word res;
 
-	mercury::types::mercury_code::ML_call_rtti_compare_type_infos(
+	mercury::type_desc::mercury_code::ML_call_rtti_compare_type_infos(
 		&res, t1, t2);
 	return System::Convert::ToInt32(res[0]);
 }
@@ -311,7 +311,7 @@
 __Compare____type_desc_0_0(
 	MR_Word_Ref result, MR_Word x, MR_Word y)
 {
-	mercury::types::mercury_code::ML_call_rtti_compare_type_infos(
+	mercury::type_desc::mercury_code::ML_call_rtti_compare_type_infos(
 		result, x, y);
 }
 
@@ -325,7 +325,7 @@
 special___Compare___type_desc_0_0(
 	MR_Word_Ref result, MR_Word x, MR_Word y)
 {
-	mercury::types::mercury_code::ML_call_rtti_compare_type_infos(
+	mercury::type_desc::mercury_code::ML_call_rtti_compare_type_infos(
 		result, x, y);
 }
 
@@ -591,14 +591,9 @@
 	}
 }").
 
-:- pragma foreign_proc("C#", 
-	make_type(_TypeCtorDesc::in, _ArgTypes::in) = (_TypeDesc::out),
-	[will_not_call_mercury, thread_safe, promise_pure],
-"{
-	mercury.runtime.Errors.SORRY(""make_type"");
-	// XXX this is required to keep the C# compiler quiet
-	SUCCESS_INDICATOR = false;
-}").
+:- pragma promise_pure(make_type/2).
+make_type(_TypeCtorDesc::in, _ArgTypes::in) = (_TypeDesc::out) :-
+	private_builtin__sorry("make_type/2 forward mode.").
 
 	/*
 	** This is the reverse mode of make_type: given a type,
@@ -622,6 +617,9 @@
 	MR_restore_transient_registers();
 }").
 
+make_type(_TypeCtorDesc::out, _ArgTypes::out) = (_TypeDesc::in) :-
+	private_builtin__sorry("make_type/2 reverse mode").
+
 :- pragma foreign_proc("C",
 	type_ctor_name_and_arity(TypeCtorDesc::in, TypeCtorModuleName::out,
 		TypeCtorName::out, TypeCtorArity::out),
@@ -655,6 +653,10 @@
             TypeCtorArity = type_ctor_info->MR_type_ctor_arity;
         }
 }").
+
+type_ctor_name_and_arity(_TypeCtorDesc::in, _ModuleName::out,
+		_TypeCtorName::out, _TypeCtorArity::out) :-
+	private_builtin__sorry("type_ctor_name_and_arity/4").
 
 %-----------------------------------------------------------------------------%
 
Index: runtime/mercury_il.il
===================================================================
RCS file: /home/mercury1/repository/mercury/runtime/mercury_il.il,v
retrieving revision 1.11
diff -u -r1.11 mercury_il.il
--- runtime/mercury_il.il	16 Aug 2001 15:04:13 -0000	1.11
+++ runtime/mercury_il.il	5 Feb 2002 16:21:35 -0000
@@ -45,6 +45,24 @@
 .class public TempHack {
 
 .method public static default int32 
+get_ftn_ptr_heap_pointer_compare() {
+	ldftn void ['mercury'] 'mercury'.'private_builtin__cpp_code'.'mercury_code'::
+	do_compare__heap_pointer_1_0(
+		class [mscorlib]System.Object[], class [mscorlib]System.Object[]&,
+		class [mscorlib]System.Object, class [mscorlib]System.Object)
+	ret
+}
+
+.method public static default int32 
+get_ftn_ptr_heap_pointer_unify() {
+	ldftn int32 ['mercury'] 'mercury'.'private_builtin__cpp_code'.'mercury_code'::
+	do_unify__heap_pointer_1_0(
+		class [mscorlib]System.Object[], class [mscorlib]System.Object,
+		class [mscorlib]System.Object)
+	ret
+}
+
+.method public static default int32 
 get_ftn_ptr_typeclass_info_compare() {
 	ldftn void ['mercury'] 'mercury'.'private_builtin__cpp_code'.'mercury_code'::
 	do_compare__typeclass_info_1_0(

--------------------------------------------------------------------------
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