[m-rev.] for review: clean up ilasm output

Fergus Henderson fjh at cs.mu.OZ.AU
Fri Jul 13 20:02:06 AEST 2001


Estimated hours taken: 1
Branches: main

compiler/ilasm.m:
	Improve the layout of the generated code -- use more whitespace.

I've attached an example of the new layout of the generated IL.
This is about as good as I can get it without keeping track of
the indentation level and/or line width (which I'm not going to
bother with at the moment).

Workspace: /home/mars/fjh/ws2/mercury
Index: compiler/ilasm.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/ilasm.m,v
retrieving revision 1.13
diff -u -d -r1.13 ilasm.m
--- compiler/ilasm.m	2001/07/11 09:10:34	1.13
+++ compiler/ilasm.m	2001/07/13 09:53:41
@@ -343,7 +343,7 @@
 ilasm__output_decl(method(MethodHead, MethodDecls), Info0, Info) --> 
 	io__write_string(".method "),
 	output_methodhead(MethodHead, Info0, Info1),
-	io__write_string(" {\n"),
+	io__write_string("\n{\n"),
 	ilasm__write_list(MethodDecls, "\n", output_method_body_decl,
 		Info1, Info),
 	io__write_string("}\n").
@@ -434,13 +434,9 @@
 		[]
 	),
 	io__write_list(FieldAttrs, " ", io__write),
-	( { FieldAttrs \= [] } ->
-		io__write_string(" ")
-	;
-		[]
-	),
+	io__write_string("\n\t"),
 	output_type(Type, Info0, Info),
-	io__write_string(" "),
+	io__write_string("\n\t"),
 	output_id(IlId),
 	output_field_initializer(Initializer).
 
@@ -455,7 +451,7 @@
 		io__nl,
 		io__write_string("\t.get instance "),
 		output_name_signature_and_call_conv(GetSignature,
-				yes(GetMethodName), Info1, Info2)
+				yes(GetMethodName), "\t\t", Info1, Info2)
 	; { MaybeGet = no },
 		{ Info2 = Info1 }
 	),
@@ -463,7 +459,7 @@
 		io__nl,
 		io__write_string("\t.set instance "),
 		output_name_signature_and_call_conv(SetSignature,
-				yes(SetMethodName), Info2, Info)
+				yes(SetMethodName), "\t\t", Info2, Info)
 	; { MaybeSet = no },
 		{ Info = Info2 }
 	),
@@ -514,7 +510,7 @@
 	;
 		[]
 	),
-	output_name_signature_and_call_conv(Signature, yes(MethodName),
+	output_name_signature_and_call_conv(Signature, yes(MethodName), "\t",
 		Info0, Info),
 	io__write_list(ImplAttrs, " ", io__write).
 
@@ -564,22 +560,30 @@
 	).
 
 :- pred output_name_signature_and_call_conv(signature::in,
-	maybe(member_name)::in, ilasm_info::in, ilasm_info::out,
+	maybe(member_name)::in, string::in, ilasm_info::in, ilasm_info::out,
 	io__state::di, io__state::uo) is det.
 output_name_signature_and_call_conv(signature(CallConv, ReturnType,
-		 ArgTypes), MaybeMethodName, Info0, Info) -->
+		 ArgTypes), MaybeMethodName, Indent, Info0, Info) -->
 	output_call_conv(CallConv),
-	io__write_string(" "),
+	io__write_string("\n"),
+	io__write_string(Indent),
 	output_ret_type(ReturnType, Info0, Info1),
-	io__write_string(" "),
 	( { MaybeMethodName = yes(MethodName) } ->
+		io__write_string("\n"),
+		io__write_string(Indent),
 		output_member_name(MethodName)
 	;
-		[]
+		io__write_string(" ")
 	),
-	io__write_string("("),
-	ilasm__write_list(ArgTypes, ", ", output_param, Info1, Info),
-	io__write_string(")").
+	( { ArgTypes = [] } ->
+		io__write_string("()"),
+		{ Info = Info0 }
+	;
+		io__write_string("(\n\t\t"),
+		ilasm__write_list(ArgTypes, ",\n\t\t", output_param,
+			Info1, Info),
+		io__write_string("\n\t)")
+	).
 
 :- pred output_member_name(member_name::in, io__state::di,
 	 io__state::uo) is det.
@@ -767,27 +771,32 @@
 		output_trace_instr(Instr, Info1, Info),
 		io__write_string("\n")
 
-
 	; { Instr = start_block(scope(Locals), Id) } ->
 		{ string__format("{\t// #%d", [i(Id)], S) },
 		io__write_string(S),
 		io__nl,
 		output_trace(S),
 
+		( { Locals = [] } ->
+			{ Info = Info0 }
+		;
 			% output the .locals decl
-		io__write_string(".locals ("),
-		ilasm__write_list(Locals, ", ", output_local, Info0, Info1),
-		io__write_string(")"),
-		io__write_string("\n"),
+			io__write_string("\t.locals (\n\t\t"),
+			ilasm__write_list(Locals, ",\n\t\t", output_local,
+				Info0, Info1),
+			io__write_string("\n\t)"),
+			io__write_string("\n"),
 
-			% trace the .locals decl
-		io__write_string("\t\tldstr """),
-		io__write_string(".locals ("),
-		ilasm__write_list(Locals, ", ", output_local, Info1, Info),
-		io__write_string(")"),
-		io__write_string("\\n"""),
-		io__write_string("\n"),
-		io__write_string("\t\tcall void ['mscorlib']System.Console::Write(class ['mscorlib']System.String)\n")
+				% trace the .locals decl
+			io__write_string("\t\tldstr """),
+			io__write_string(".locals (\\n\\t\\t"),
+			ilasm__write_list(Locals, ",\\n\\t\\t", output_local,
+				Info1, Info),
+			io__write_string(")"),
+			io__write_string("\\n"""),
+			io__write_string("\n"),
+			io__write_string("\t\tcall void ['mscorlib']System.Console::Write(class ['mscorlib']System.String)\n")
+		)
 
 	;
 		output_trace_instr(Instr, Info0, Info1),
@@ -855,9 +864,13 @@
 	io__write_string("{"),
 	io__write_string("\t// #"),
 	io__write_int(Id),
-	io__write_string("\n\t.locals ("),
-	ilasm__write_list(Locals, ", ", output_local, Info0, Info),
-	io__write_string(")\n").
+	( { Locals = [] } ->
+		{ Info = Info0 }
+	;
+		io__write_string("\n\t.locals (\n\t\t"),
+		ilasm__write_list(Locals, ",\n\t\t", output_local, Info0, Info),
+		io__write_string("\n\t)\n")
+	).
 
 output_instr(start_block(try, Id), I, I) -->
 	io__write_string(".try {"),
@@ -889,11 +902,11 @@
 	io__write_string(" (try block)").
 
 output_instr(context(File, Line), I, I) -->
-	io__write_string(".line "),
+	io__write_string("\n\t.line "),
 	io__write_int(Line),
 	io__write_string(" '"),
 	io__write_string(File),
-	io__write_string("'\n").
+	io__write_string("'").
 
 output_instr(call(MethodRef), Info0, Info) --> 
 	io__write_string("call\t"),
@@ -905,7 +918,7 @@
 
 output_instr(calli(Signature), Info0, Info) -->
 	io__write_string("calli\t"),
-	output_name_signature_and_call_conv(Signature, no, Info0, Info).
+	output_name_signature_and_call_conv(Signature, no, "\t\t", Info0, Info).
 
 output_instr(ret, I, I) --> 
 	io__write_string("ret").
@@ -1291,7 +1304,7 @@
 	io__state::di, io__state::uo) is det.
 output_fieldref(fieldref(Type, ClassMemberName), Info0, Info) -->
 	output_type(Type, Info0, Info1),
-	io__write_string(" "),
+	io__write_string("\n\t\t"),
 	output_class_member_name(ClassMemberName, Info1, Info).
 
 :- pred output_methodref(methodref::in, ilasm_info::in, ilasm_info::out,
@@ -1304,11 +1317,17 @@
 		[]
 	),
 	output_ret_type(ReturnType, Info0, Info1),
-	io__write_string(" "),
+	io__write_string("\n\t\t"),
 	output_class_member_name(ClassMemberName, Info1, Info2),
-	io__write_string("("),
-	ilasm__write_list(ArgTypes, ", ", output_type, Info2, Info),
-	io__write_string(")").
+	( { ArgTypes = [] } ->
+		io__write_string("()\n"),
+		{ Info = Info0 }
+	;
+		io__write_string("(\n\t\t\t"),
+		ilasm__write_list(ArgTypes, ",\n\t\t\t", output_type,
+			Info2, Info),
+		io__write_string("\n\t\t)")
+	).
 output_methodref(local_method(call_conv(IsInstance, _), ReturnType, 
 		MethodName, ArgTypes), Info0, Info) -->
 	( { IsInstance = yes } ->
@@ -1317,11 +1336,17 @@
 		[]
 	),
 	output_ret_type(ReturnType, Info0, Info1),
-	io__write_string(" "),
+	io__write_string("\n\t\t"),
 	output_member_name(MethodName),
-	io__write_string("("),
-	ilasm__write_list(ArgTypes, ", ", output_type, Info1, Info),
-	io__write_string(")").
+	( { ArgTypes = [] } ->
+		io__write_string("()\n"),
+		{ Info = Info0 }
+	;
+		io__write_string("(\n\t\t\t"),
+		ilasm__write_list(ArgTypes, ",\n\t\t\t", output_type,
+			Info1, Info),
+		io__write_string("\n\t\t)")
+	).
 
 :- pred output_classattr(classattr::in, io__state::di, io__state::uo) is det.
 
-- 
Fergus Henderson <fjh at cs.mu.oz.au>  |  "I have always known that the pursuit
The University of Melbourne         |  of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh>  |     -- the last words of T. S. Garp.
-------------- next part --------------
//
// Automatically generated from `require.m' by the
// Mercury compiler, version DEV, configured for i686-pc-linux-gnu.
// Do not edit.



.assembly extern 'mercury'{
.ver 0:0:0:0
	.publickeytoken = ( 22 8C 16 7D 12 AA B B ) 
}


.assembly extern 'mscorlib'{
.ver 1:0:2411:0
	.publickeytoken = ( B7 7A 5C 56 19 34 E0 89 ) 
	.hash = ( B0 73 F2 4C 14 39 A 35 25 EA 45 F 60 58 C3 84 E0 3B E0 95 ) 
}


.namespace 'mercury'.'require' {
.class public 'mercury_code' {
.field public static
	bool
	'rtti_initialized'
.method public static default 
	void
	.cctor()
{
	ldsfld	bool
		['mercury']'mercury'.'require'.'mercury_code'::'rtti_initialized'
	brfalse	l1
	ret
	l1:
	
	.line 0 ''
	ldc.i4.s	14
	newarr	class ['mscorlib']'System'.'Object'
	stsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__type_ctor_info_software_error_0'
	
	.line 0 ''
	ldc.i4.1
	newarr	class ['mscorlib']'System'.'Object'
	stsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__du_name_ordered_software_error_0'
	
	.line 0 ''
	ldc.i4.s	10
	newarr	class ['mscorlib']'System'.'Object'
	stsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__du_functor_desc_software_error_0_0'
	
	.line 0 ''
	ldc.i4.1
	newarr	class ['mscorlib']'System'.'Object'
	stsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__field_types_software_error_0_0'
	
	.line 0 ''
	ldc.i4.1
	newarr	class ['mscorlib']'System'.'Object'
	stsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__du_ptag_ordered_software_error_0'
	
	.line 0 ''
	ldc.i4.1
	newarr	class ['mscorlib']'System'.'Object'
	stsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__du_stag_ordered_software_error_0_0'
	ldc.i4.1
	stsfld	bool
		['mercury']'mercury'.'require'.'mercury_code'::'rtti_initialized'
	call	void
		['mercury']'mercury'.'assoc_list'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'bintree_set'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'bool'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'builtin'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'char'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'enum'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'exception'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'float'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'int'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'io'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'list'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'map'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'ops'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'private_builtin'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'require'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'set'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'std_util'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'store'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'string'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'term'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'time'.'mercury_code'::.cctor()

	call	void
		['mercury']'mercury'.'tree234'.'mercury_code'::.cctor()

	
	.line 0 ''
	ldsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__type_ctor_info_software_error_0'
	dup
	ldc.i4.0
	ldc.i4.0
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.1
	ldftn	int32
		['mercury']'mercury'.'require'.'mercury_code'::'special___Unify___software_error_0_0'(
			class ['mscorlib']'System'.'Object'[],
			class ['mscorlib']'System'.'Object'[]
		)
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.2
	ldftn	int32
		['mercury']'mercury'.'require'.'mercury_code'::'special___Unify___software_error_0_0'(
			class ['mscorlib']'System'.'Object'[],
			class ['mscorlib']'System'.'Object'[]
		)
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.3
	ldftn	void
		['mercury']'mercury'.'require'.'mercury_code'::'special___Compare___software_error_0_0'(
			class ['mscorlib']'System'.'Object'[]&,
			class ['mscorlib']'System'.'Object'[],
			class ['mscorlib']'System'.'Object'[]
		)
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.4
	ldsfld	int32
		['mercury']'mercury'.'private_builtin__cpp_code'.'mercury_code'::'MR_TYPECTOR_REP_DU'
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.5
	ldnull
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	castclass	class ['mscorlib']'System'.'Object'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.6
	ldnull
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	castclass	class ['mscorlib']'System'.'Object'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.7
	ldstr	"require"
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.s	8
	ldstr	"software_error"
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.s	9
	ldc.i4.4
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.s	10
	ldc.i4.1
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__du_name_ordered_software_error_0'
	castclass	class ['mscorlib']'System'.'Object'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	stelem.ref
	dup
	ldc.i4.s	11
	ldc.i4.1
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__du_ptag_ordered_software_error_0'
	castclass	class ['mscorlib']'System'.'Object'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	stelem.ref
	dup
	ldc.i4.s	12
	ldc.i4.1
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.s	13
	ldc.i4.1
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	pop
	
	.line 0 ''
	ldsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__du_name_ordered_software_error_0'
	dup
	ldc.i4.0
	ldsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__du_functor_desc_software_error_0_0'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	pop
	
	.line 0 ''
	ldsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__du_functor_desc_software_error_0_0'
	dup
	ldc.i4.0
	ldstr	"software_error"
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.1
	ldc.i4.1
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.2
	ldc.i4.0
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.3
	ldsfld	int32
		['mercury']'mercury'.'private_builtin__cpp_code'.'mercury_code'::'MR_SECTAG_NONE'
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.4
	ldc.i4.0
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.5
	ldc.i4.0
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.6
	ldc.i4.0
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.7
	ldsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__field_types_software_error_0_0'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.s	8
	ldnull
	castclass	class ['mscorlib']'System'.'Object'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.s	9
	ldnull
	castclass	class ['mscorlib']'System'.'Object'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	pop
	
	.line 0 ''
	ldsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__field_types_software_error_0_0'
	dup
	ldc.i4.0
	ldsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'builtin__cpp_code'.'mercury_code'::'__type_ctor_info_string_0'
	castclass	class ['mscorlib']'System'.'Object'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	pop
	
	.line 0 ''
	ldsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__du_ptag_ordered_software_error_0'
	dup
	ldc.i4.0
	ldc.i4.3
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.1
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.1
	ldsfld	int32
		['mercury']'mercury'.'private_builtin__cpp_code'.'mercury_code'::'MR_SECTAG_NONE'
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.2
	ldsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__du_stag_ordered_software_error_0_0'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	stelem.ref
	pop
	
	.line 0 ''
	ldsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__du_stag_ordered_software_error_0_0'
	dup
	ldc.i4.0
	ldsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__du_functor_desc_software_error_0_0'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	pop
	ret
}

.field public static initonly
	class ['mscorlib']'System'.'Object'[]
	'require__type_ctor_info_software_error_0'
.field private static initonly
	class ['mscorlib']'System'.'Object'[]
	'require__du_name_ordered_software_error_0'
.field private static initonly
	class ['mscorlib']'System'.'Object'[]
	'require__du_functor_desc_software_error_0_0'
.field private static initonly
	class ['mscorlib']'System'.'Object'[]
	'require__field_types_software_error_0_0'
.field private static initonly
	class ['mscorlib']'System'.'Object'[]
	'require__du_ptag_ordered_software_error_0'
.field private static initonly
	class ['mscorlib']'System'.'Object'[]
	'require__du_stag_ordered_software_error_0_0'
.method public static default 
	void
	'special___Compare___software_error_0_0'(
		class ['mscorlib']'System'.'Object'[]& 'HeadVar__1_1',
		class ['mscorlib']'System'.'Object'[] 'HeadVar__2_2',
		class ['mscorlib']'System'.'Object'[] 'HeadVar__3_3'
	)
{
.maxstack 5
.zeroinit 
	
	.line 17 'require.m'
	
	.line 17 'require.m'
	{	// #1
	
	.line 17 'require.m'
	{	// #2
	.locals (
		class ['mscorlib']'System'.'String' 'V_4_4',
		class ['mscorlib']'System'.'String' 'V_5_5',
		int32 'Res_7_10'
	)

	
	.line 17 'require.m'
	ldarg	'HeadVar__2_2'
	ldc.i4.0
	ldelem.ref
	castclass	class ['mscorlib']'System'.'String'
	stloc	'V_4_4'
	
	.line 17 'require.m'
	ldarg	'HeadVar__3_3'
	ldc.i4.0
	ldelem.ref
	castclass	class ['mscorlib']'System'.'String'
	stloc	'V_5_5'
	
	.line 51 'private_builtin.opt'
	ldloca	'Res_7_10'
	ldloc	'V_4_4'
	ldloc	'V_5_5'
	call	void
		['mercury']'mercury'.'private_builtin'.'mercury_code'::'builtin_strcmp_3'(
			int32&,
			class ['mscorlib']'System'.'String',
			class ['mscorlib']'System'.'String'
		)
	
	.line 53 'private_builtin.opt'
	
	.line 54 'private_builtin.opt'
	ldloc	'Res_7_10'
	ldc.i4.0
	clt
	
	.line 57 'private_builtin.opt'
	brfalse	l1
	
	.line 56 'private_builtin.opt'
	ldarg	'HeadVar__1_1'
	ldc.i4.1
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.1
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	stind.ref
	ret
	l1:
	
	.line 62 'private_builtin.opt'
	{	// #3
	
	.line 59 'private_builtin.opt'
	ldloc	'Res_7_10'
	ldc.i4.0
	ceq
	
	.line 62 'private_builtin.opt'
	brfalse	l3
	
	.line 61 'private_builtin.opt'
	ldarg	'HeadVar__1_1'
	ldc.i4.1
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.0
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	stind.ref
	br	l4
	l3:
	
	.line 63 'private_builtin.opt'
	ldarg	'HeadVar__1_1'
	ldc.i4.1
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.2
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	stind.ref
	l4:
	}	// #3
	l2:
	}	// #2
	}	// #1
	ret
}

.method public static default 
	int32
	'special___Unify___software_error_0_0'(
		class ['mscorlib']'System'.'Object'[] 'HeadVar__1_1',
		class ['mscorlib']'System'.'Object'[] 'HeadVar__2_2'
	)
{
.maxstack 2
.zeroinit 
	
	.line 17 'require.m'
	
	.line 17 'require.m'
	{	// #1
	
	.line 17 'require.m'
	{	// #2
	.locals (
		class ['mscorlib']'System'.'String' 'V_3_3',
		class ['mscorlib']'System'.'String' 'V_4_4'
	)

	
	.line 17 'require.m'
	ldarg	'HeadVar__1_1'
	ldc.i4.0
	ldelem.ref
	castclass	class ['mscorlib']'System'.'String'
	stloc	'V_3_3'
	
	.line 17 'require.m'
	ldarg	'HeadVar__2_2'
	ldc.i4.0
	ldelem.ref
	castclass	class ['mscorlib']'System'.'String'
	stloc	'V_4_4'
	
	.line 0 ''
	ldloc	'V_3_3'
	ldloc	'V_4_4'
	call	bool
		['mscorlib']'System'.'String'::'Equals'(
			class ['mscorlib']'System'.'String',
			class ['mscorlib']'System'.'String'
		)
	
	.line 17 'require.m'
	}	// #2
	}	// #1
	ret
}

.method public static default 
	void
	'report_lookup_error_3'(
		class ['mscorlib']'System'.'Object'[] 'TypeInfo_for_K_32',
		class ['mscorlib']'System'.'Object'[] 'TypeInfo_for_V_33',
		class ['mscorlib']'System'.'String' 'HeadVar__1_1',
		class ['mscorlib']'System'.'Object' 'HeadVar__2_2',
		class ['mscorlib']'System'.'Object'& 'HeadVar__3_3'
	)
{
.maxstack 4
.zeroinit 
	
	.line 38 'require.m'
	
	.line 38 'require.m'
	{	// #1
	
	.line 62 'require.m'
	{	// #2
	.locals (
		class ['mscorlib']'System'.'Object' 'V_6',
		class ['mscorlib']'System'.'String' 'KeyType_7',
		class ['mscorlib']'System'.'String' 'ValueType_8',
		class ['mscorlib']'System'.'String' 'Functor_9',
		int32 'Arity_10',
		class ['mscorlib']'System'.'String' 'FunctorStr_11',
		class ['mscorlib']'System'.'Object'[] 'V_15_15',
		class ['mscorlib']'System'.'String' 'V_16_16',
		class ['mscorlib']'System'.'Object'[] 'V_17_17',
		class ['mscorlib']'System'.'Object'[] 'V_18_18',
		class ['mscorlib']'System'.'String' 'V_19_19',
		class ['mscorlib']'System'.'Object'[] 'V_20_20',
		class ['mscorlib']'System'.'Object'[] 'V_21_21',
		class ['mscorlib']'System'.'String' 'V_22_22',
		class ['mscorlib']'System'.'Object'[] 'V_23_23',
		class ['mscorlib']'System'.'Object'[] 'V_24_24',
		class ['mscorlib']'System'.'Object' 'V_34_34'
	)

	
	.line 63 'require.m'
	ldarg	'TypeInfo_for_K_32'
	ldloca	'V_34_34'
	call	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'std_util'.'mercury_code'::'type_of_2'(
			class ['mscorlib']'System'.'Object'[],
			class ['mscorlib']'System'.'Object'&
		)
	
	.line 63 'require.m'
	call	class ['mscorlib']'System'.'String'
		['mercury']'mercury'.'std_util'.'mercury_code'::'type_name_2'(
			class ['mscorlib']'System'.'Object'[]
		)
	stloc	'KeyType_7'
	
	.line 64 'require.m'
	ldarg	'TypeInfo_for_V_33'
	ldloca	'V_6'
	call	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'std_util'.'mercury_code'::'type_of_2'(
			class ['mscorlib']'System'.'Object'[],
			class ['mscorlib']'System'.'Object'&
		)
	
	.line 64 'require.m'
	call	class ['mscorlib']'System'.'String'
		['mercury']'mercury'.'std_util'.'mercury_code'::'type_name_2'(
			class ['mscorlib']'System'.'Object'[]
		)
	stloc	'ValueType_8'
	
	.line 65 'require.m'
	ldarg	'TypeInfo_for_K_32'
	ldarg	'HeadVar__2_2'
	ldloca	'Functor_9'
	ldloca	'Arity_10'
	call	void
		['mercury']'mercury'.'std_util'.'mercury_code'::'functor_3'(
			class ['mscorlib']'System'.'Object'[],
			class ['mscorlib']'System'.'Object',
			class ['mscorlib']'System'.'String'&,
			int32&
		)
	
	.line 66 'require.m'
	ldloc	'Arity_10'
	ldc.i4.0
	ceq
	
	.line 68 'require.m'
	brfalse	l1
	
	.line 67 'require.m'
	ldloc	'Functor_9'
	stloc	'FunctorStr_11'
	br	l2
	l1:
	
	.line 69 'require.m'
	{	// #3
	.locals (
		class ['mscorlib']'System'.'String' 'ArityStr_12',
		class ['mscorlib']'System'.'Object'[] 'V_26_26',
		class ['mscorlib']'System'.'String' 'V_27_27',
		class ['mscorlib']'System'.'Object'[] 'V_28_28',
		class ['mscorlib']'System'.'Object'[] 'V_29_29'
	)

	
	.line 69 'require.m'
	
	.line 99 'string.opt'
	ldloc	'Arity_10'
	ldc.i4.s	10
	ldloca	'ArityStr_12'
	call	void
		['mercury']'mercury'.'string'.'mercury_code'::'int_to_base_string_3'(
			int32,
			int32,
			class ['mscorlib']'System'.'String'&
		)
	
	.line 70 'require.m'
	ldstr	"/"
	stloc	'V_27_27'
	
	.line 70 'require.m'
	ldc.i4.1
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.0
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	stloc	'V_29_29'
	
	.line 70 'require.m'
	ldc.i4.3
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.1
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.1
	ldloc	'ArityStr_12'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.2
	ldloc	'V_29_29'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	stloc	'V_28_28'
	
	.line 70 'require.m'
	ldc.i4.3
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.1
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.1
	ldloc	'V_27_27'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.2
	ldloc	'V_28_28'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	stloc	'V_26_26'
	
	.line 70 'require.m'
	ldc.i4.3
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.1
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.1
	ldloc	'Functor_9'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.2
	ldloc	'V_26_26'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	
	.line 468 'string.opt'
	call	class ['mscorlib']'System'.'String'
		['mercury']'mercury'.'string'.'mercury_code'::'append_list_2'(
			class ['mscorlib']'System'.'Object'[]
		)
	stloc	'FunctorStr_11'
	}	// #3
	l2:
	
	.line 74 'require.m'
	ldstr	"\n\tKey Type: "
	stloc	'V_16_16'
	
	.line 76 'require.m'
	ldstr	"\n\tKey Functor: "
	stloc	'V_19_19'
	
	.line 78 'require.m'
	ldstr	"\n\tValue Type: "
	stloc	'V_22_22'
	
	.line 80 'require.m'
	ldc.i4.1
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.0
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	stloc	'V_24_24'
	
	.line 78 'require.m'
	ldc.i4.3
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.1
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.1
	ldloc	'ValueType_8'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.2
	ldloc	'V_24_24'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	stloc	'V_23_23'
	
	.line 77 'require.m'
	ldc.i4.3
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.1
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.1
	ldloc	'V_22_22'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.2
	ldloc	'V_23_23'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	stloc	'V_21_21'
	
	.line 76 'require.m'
	ldc.i4.3
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.1
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.1
	ldloc	'FunctorStr_11'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.2
	ldloc	'V_21_21'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	stloc	'V_20_20'
	
	.line 75 'require.m'
	ldc.i4.3
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.1
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.1
	ldloc	'V_19_19'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.2
	ldloc	'V_20_20'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	stloc	'V_18_18'
	
	.line 74 'require.m'
	ldc.i4.3
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.1
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.1
	ldloc	'KeyType_7'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.2
	ldloc	'V_18_18'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	stloc	'V_17_17'
	
	.line 73 'require.m'
	ldc.i4.3
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.1
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.1
	ldloc	'V_16_16'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.2
	ldloc	'V_17_17'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	stloc	'V_15_15'
	
	.line 72 'require.m'
	ldc.i4.3
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldc.i4.1
	call	class ['mscorlib']'System'.'Object'
		['mercury']'mercury'.'runtime'.'Convert'::'ToObject'(
			int32
		)
	stelem.ref
	dup
	ldc.i4.1
	ldarg	'HeadVar__1_1'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	dup
	ldc.i4.2
	ldloc	'V_15_15'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	
	.line 468 'string.opt'
	call	class ['mscorlib']'System'.'String'
		['mercury']'mercury'.'string'.'mercury_code'::'append_list_2'(
			class ['mscorlib']'System'.'Object'[]
		)
	
	.line 82 'require.m'
	tail.
	call	void
		['mercury']'mercury'.'require'.'mercury_code'::'error_1'(
			class ['mscorlib']'System'.'String'
		)
	}	// #2
	}	// #1
	ret
}

.method public static default 
	void
	'require_2'(
		class ['mscorlib']'System'.'Object'[] 'HeadVar__1_1',
		class ['mscorlib']'System'.'String' 'HeadVar__2_2'
	)
{
.maxstack 2
.zeroinit 
	
	.line 28 'require.m'
	
	.line 28 'require.m'
	{	// #1
	
	.line 55 'require.m'
	{	// #2
	.locals (
		int32 'func_1'
	)

	
	.line 53 'require.m'
	ldarg	'HeadVar__1_1'
	ldc.i4.1
	ldelem.ref
	call	int32
		['mercury']'mercury'.'runtime'.'Convert'::'ToInt32'(
			class ['mscorlib']'System'.'Object'
		)
	stloc	'func_1'
	
	.line 53 'require.m'
	ldarg	'HeadVar__1_1'
	castclass	class ['mscorlib']'System'.'Object'
	ldloc	'func_1'
	calli	default 
		int32 (
		class ['mscorlib']'System'.'Object'
	)
	
	.line 55 'require.m'
	brfalse	l1
	
	.line 54 'require.m'
	{	// #3
	}	// #3
	ret
	l1:
	
	.line 56 'require.m'
	ldarg	'HeadVar__2_2'
	tail.
	call	void
		['mercury']'mercury'.'require'.'mercury_code'::'error_1'(
			class ['mscorlib']'System'.'String'
		)
	ret
	l2:
	}	// #2
	}	// #1
	ret
}

.method public static default 
	void
	'error_1'(
		class ['mscorlib']'System'.'String' 'HeadVar__1_1'
	)
{
.maxstack 4
.zeroinit 
	
	.line 20 'require.m'
	
	.line 20 'require.m'
	{	// #1
	
	.line 89 'require.m'
	{	// #2
	.locals (
		class ['mscorlib']'System'.'Object'[] 'V_3_3'
	)

	
	.line 90 'require.m'
	ldc.i4.1
	newarr	class ['mscorlib']'System'.'Object'
	dup
	ldc.i4.0
	ldarg	'HeadVar__1_1'
	isinst	class ['mscorlib']'System'.'Object'
	stelem.ref
	stloc	'V_3_3'
	
	.line 0 ''
	ldsfld	class ['mscorlib']'System'.'Object'[]
		['mercury']'mercury'.'require'.'mercury_code'::'require__type_ctor_info_software_error_0'
	castclass	class ['mscorlib']'System'.'Object'[]
	
	.line 90 'require.m'
	ldloc	'V_3_3'
	isinst	class ['mscorlib']'System'.'Object'
	tail.
	call	void
		['mercury']'mercury'.'exception'.'mercury_code'::'throw_1'(
			class ['mscorlib']'System'.'Object'[],
			class ['mscorlib']'System'.'Object'
		)
	}	// #2
	}	// #1
	ret
}

}

}


// End of module: require. 


More information about the reviews mailing list