[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