2002-09-02 Rhys Weatherley <rweather@southern-storm.com.au> * samples/I18N.CJK.dll, samples/I18N.MidEast.dll, samples/I18N.Other.dll, samples/I18N.Rare.dll, samples/I18N.West.dll, samples/I18N.dll, samples/System.Xml.dll, samples/System.dll, samples/mscorlib.dll: update all assemblies from pnetlib. * NEWS, configure.in: update version for the "0.4.4" release. * configure.in: update working version to "0.4.5". 2002-08-23 Gopal.V <gopalv82@symonds.net> * cscc/csharp/cs_stmt.tc, codegen/cg_nodes.tc, codegen/cg_stmt.tc: foreach loop with casted variables for simple array iteration. 2002-08-30 Rhys Weatherley <rweather@southern-storm.com.au> * engine/lib_array.c: reversed array bounds check (Gopal V). 2002-08-29 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/c/c_types.c: don't add "BitFieldAttribute" to a type if the bit field is anonymous. 2002-08-28 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/c/c_grammar.y, cscc/c/c_oper.tc, cscc/c/c_scope.c: fix constant folding of operators. * cscc/c/c_oper.tc (BinarySem): minor bug in previous check-in. * cscc/common/cc_main.c: add "-w" to the cpp command-line to stop GNU cpp complaining about the symbols that we redefine. 2002-08-26 Rhys Weatherley <rweather@southern-storm.com.au> * engine/call.c (_ILCallPackVaParams): copy the "va_list" parameter using memcpy rather than a structure copy, because "va_list" is an array type on some platforms and the structure copy doesn't work. 2002-08-25 Rhys Weatherley <rweather@southern-storm.com.au> * ilalink/link_create.c, ilalink/link_image.c, ilalink/link_main.c, ilalink/linker.h, include/il_linker.h: add the link images to the context in a single pass before processing their contents. * ilalink/link_image.c, ilalink/link_library.c, ilalink/linker.h: load the global C variable and function definitions from the link images into a hash table prior to processing. * ilalink/link_class.c, ilalink/link_image.c, ilalink/link_type.c, ilalink/linker.h: rename private classes in C object files so that the same name can be used in multiple objects (e.g. "$strings"). * ilalink/link_class.c, ilalink/link_field.c, ilalink/link_method.c, ilalink/link_module.c, ilalink/linker.h: rename private fields and methods in C object files so that the same name can be used in multiple objects. 2002-08-24 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/c/c_grammar.y, cscc/c/c_scope.c, cscc/c/c_scope.h, cscc/c/c_types.c, cscc/c/c_types.h: process enumerated constants. 2002-08-23 Gopal.V <gopalv82@symonds.net> * cscc/c/c_lvalue.tc: The member lookup in dereferenced access (ILNode_CDerefField) 2002-08-23 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/c/c_grammar.y, cscc/c/c_library.c, cscc/c/c_types.c, cscc/c/c_types.h, doc/c_language_abi.html: add bit field definitions to the C compiler. * cscc/c/c_defs.tc, cscc/c/c_lvalue.tc, cscc/c/c_oper.tc, cscc/c/c_stubs.tc, cscc/c/c_types.c, cscc/c/c_types.h: implement semantic analysis and code generation for bit fields. * codegen/cg_gen.c, codegen/cg_gen.h, codegen/cg_stmt.tc, cscc/c/c_function.c, cscc/c/c_internal.c, cscc/c/c_stmt.tc: implement semantic analysis and code generation for "goto". 2002-08-22 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/c/c_coerce.c, cscc/c/c_grammar.y, cscc/c/c_scanner.l, doc/c_language_abi.html: replace "__bool__" with the ISO C "_Bool". * cscc/c/c_grammar.y, cscc/c/c_scanner.l: add imaginary constants to the C scanner and grammar. * cscc/csharp/cs_grammar.y, cscc/csharp/cs_scanner.l: add the "__long_double" keyword to the C# compiler, to make it easier to define standard ABI types for C. * cscc/c/c_builtin.tc, cscc/c/c_library.c, cscc/c/c_oper.tc, csupport/LongDouble.cs, csupport/Makefile.am, csupport/Markers.cs, csupport/NativeFloat.il, doc/c_language_abi.html: rename the "NativeFloat" class to "LongDouble", and implement in C# instead of in IL. * codegen/cg_optable.c: add builtin operator definitions for the "__long_double" type. * csupport/Complex.cs, csupport/Makefile.am: add complex number types to support ISO C complex number arithmetic. * doc/c_language_abi.html: document the complex number types in the ABI definition. 2002-08-21 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/common/cc_main.c, ilalink/link_create.c, ilalink/link_library.c, ilalink/link_main.c, ilalink/linker.h, include/il_linker.h: using "-nostdlib" should turn off the standard library assemblies, but not the standard search directories. * ilalink/link_library.c, ilalink/link_main.c, ilalink/link_type.c, ilalink/linker.h, include/il_linker.h: re-design the process of adding libraries to the linker context so that recursively-referenced libraries are automatically loaded. * ilalink/link_library.c, ilalink/linker.h: convert member reference signatures at the point of use, not when the library is first loaded. * ilalink/link_create.c, ilalink/link_library.c, ilalink/linker.h: expand library references such as "-lm" to "-llibm64". * cscc/c/c_function.c: output a dummy method body in strong aliases for vararg functions, for better interoperability with other CLR's. * ilalink/link_class.c, ilalink/link_create.c, ilalink/link_library.c, ilalink/link_main.c, ilalink/link_method.c, ilalink/link_module.c, ilalink/link_type.c, ilalink/linker.h, include/il_linker.h: use "$Module$" instead of "<Module>" when linking a library, to improve interoperability with other CLR's that cannot directly reference "<Module>" in another assembly. * doc/c_language_abi.html: document the use of "$Module$. * csupport/Crt0.cs: use "$Module$" to look up the module type in the "libc" assembly. * cscc/c/c_coerce.c (ApplyCoercion): set the "toType" in the returned semantic value in the default case of making no change to the representation of the value. * image/opdef.c: correct a bug in the opcode list: "stdind.i" should be "stind.i". 2002-08-20 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/c/c_function.c, cscc/c/c_function.h, doc/c_language_abi.html: implement attributes for constructors and destructors. * codegen/cg_gen.c, codegen/cg_gen.h, codegen/cg_nodes.tc, codegen/cg_stmt.tc, cscc/c/c_defs.tc, cscc/c/c_grammar.y, cscc/c/c_scope.c, cscc/c/c_stmt.tc, cscc/c/c_stubs.tc, cscc/csharp/cs_grammar.y: semantic analysis and code generation for C "switch" statements. * cscc/c/c_grammar.y: mark enumerated constants as TODO; flush pending initializers before parsing the body of a function. * cscc/c/c_const.tc: store strings in separate fields within the string pool, so that we don't have the overhead of adding a string pool offset every time a string is referenced. * cscc/c_main.c, cscc/cs_main.c, cscc/cscc.c, cscc/csdoc.c, cscc/common/cc_main.c, cscc/common/cc_main.h, ilalink/link_library.c, ilalink/link_main.c, include/il_linker.h: make sure that "mscorlib" and "OpenSystem.C" are linked into C applications, even if "-nostdlib" is supplied to the compiler. * cscc/common/cc_main.c: don't compile against "mscorlib" if "-fbuiltin-library" is supplied, to allow "cscctest" to work. 2002-08-19 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/c/c_coerce.c, cscc/c/c_declspec.c, cscc/c/c_library.c, cscc/c/c_oper.tc, cscc/c/c_types.c, cscc/c/c_types.h, csupport/Markers.cs, doc/c_language_abi.html: mark function pointer types with the "IsFunctionPointer" modifier so that they can be distinguished from function types. * cscc/c/c_declspec.c, cscc/c/c_grammar.y: process function declarations that use "typeof" to strip the type off another function. * cscc/c/c_defs.tc, cscc/c/c_function.c, cscc/c/c_function.h, cscc/c/c_grammar.y, cscc/c/c_stubs.tc, dumpasm/dump_type.c: implement function attributes for weak aliases, strong aliases, and PInvoke references. * cscc/c/c_function.c: add the "tail" prefix to function calls in weak and strong alias definitions. * cscc/c/c_defs.tc, cscc/c/c_grammar.y, cscc/c/c_oper.tc: semantic analysis for the ternary conditional operator. * codegen/cg_cast.tc, cscc/c/c_oper.tc: implement constant folding for various operators. 2002-08-17 Rhys Weatherley <rweather@southern-storm.com.au> * codegen/cg_decls.tc, cscc/csharp/cs_gather.c, cscc/csharp/cs_grammar.y, cscc/csharp/cs_scanner.l: add the "__module" keyword to the C# compiler, which exports the contents of a class into the global C scope. * cscc/c/c_internal.c: don't register the internal "OpenSystem.C" library if the external one was specified on the link line. * csupport/FileTable.cs: fine-tune the file descriptor table API, to make it easier to use from the "open" system call. * cscc/c/c_typesize.c: minor bugs in type sizes and alignments. 2002-08-16 Rhys Weatherley <rweather@southern-storm.com.au> * ilalink/link_method.c, ilasm/ilasm_build.c, image/meta_build.c: correct link and load behaviour for vararg calls across assembly boundaries. * libgc/mark.c: temporary fix to work around cygwin 1.3 problems. * engine/unroll_x86_ptr.c: remove redundant "nop" instructions that were left over from previous debugging efforts. * engine/cvm.h: fix the padding of "CVMWord" so that it will always be 4 on all i386 platforms, regardless of the compiler and platform. * ilalink/link_main.c: turn on the linking of "libc" for C apps. 2002-08-15 Rhys Weatherley <rweather@southern-storm.com.au> * ilalink/link_create.c, ilalink/link_library.c, ilalink/link_method.c, ilalink/linker.h: begin adding support for C-style module linking to "ilalink". * ilalink/link_method.c: resolve global symbol references into libraries. 2002-08-14 Rhys Weatherley <rweather@southern-storm.com.au> * ilalink/link_main.c, image/errors.c, image/pecoff_loader.c, include/il_image.h: explode ".a" files to their contents when linking. * ilalink/link_main.c, image/pecoff_loader.c, include/il_image.h: minor bugs in previous check-in. * cscc/c/c_builtin.tc: recognise instructions within a "__asm__" statement that correspond to "return". 2002-08-13 Rhys Weatherley <rweather@southern-storm.com.au> * codegen/cg_scope.c, codegen/cg_scope.h, cscc/c/c_grammar.y, cscc/c/c_scope.c, cscc/c/c_scope.h, cscc/csharp/cs_lvalue.tc: handle forward declarations for global variables. * csupport/Markers.cs, doc/c_language_abi.html: add the "OriginalName" attribute and document it. * cscc/c/c_function.c, cscc/c/c_grammar.y, cscc/c/c_scope.c, cscc/c/c_scope.h: implement forward declarations for functions. * cscc/csharp/cs_stmt.tc (ILNode_Foreach): push into a loop context inside the body of a "foreach" loop. * cscc/cscc.c, cscc/c/c_crt0.c: slight modifications to the compiler to make integration with automake/autoconf easier. * cscc/cscc.c, cscc/common/cc_main.c, cscc/common/cc_options.c, cscc/common/cc_options.h: add the "-imacros" option to the compiler command-line. * engine/lib_marshal.c (AllocHGlobal): use "calloc" instead of "malloc", to ensure that the memory is cleared. * cscc/c/c_declspec.c (CDeclSpecFinalize): recognise "unsigned" as allowed on the "uint32" type. 2002-08-12 Rhys Weatherley <rweather@southern-storm.com.au> * engine/verify.c (AssignCompatible): resolve classes before checking for compatibility. * samples/mscorlib.dll: new version with Gopal V's File patch. * cscc/c/c_defs.tc, cscc/c/c_grammar.y, cscc/c/c_lvalue.tc, cscc/c/c_stubs.tc: implement the "." and "->" field access operators. * codegen/cg_misc.tc, cscc/c/c_defs.tc, cscc/c/c_grammar.y, cscc/c/c_lvalue.tc, cscc/c/c_oper.tc, cscc/c/c_stubs.tc: implement the "*" and "&" pointer operators. * cscc/c/c_grammar.y: bug fix - wrong node type was being used for array access operators. * engine/verify_call.c (MatchSignature): allow managed pointers to be converted into any type of unmanaged pointer in unsafe mode. * engine/cvm_ptr.c: implement the "ldrva" CVM instruction. * codegen/cg_misc.tc: bug fixes to "is null" code generation for unmanaged pointers. * engine/verify_conv.c: allow managed pointers to be converted into integer types in unsafe mode. * tests/test_verify.h, tests/test_vconv.c: modify the verifier test suite to record that conversions from managed pointers to numeric types are allowed in unsafe mode. * cscc/c/c_scope.c (CScopeAddLocal): adding local variables to the wrong scope. * engine/ilrun.c, engine/process.c, ildb/ildb_run.c, include/il_engine.h: shift the command-line array creation logic into "ILExecProcessSetCommandLine", and make sure that the value for "TaskMethods.GetCommandLineArgs" is initialised correctly. 2002-08-11 Rhys Weatherley <rweather@southern-storm.com.au> * codegen/cg_misc.tc, cscc/c/c_builtin.tc, cscc/c/c_defs.tc, cscc/c/c_grammar.y, cscc/c/c_invoke.tc, cscc/c/c_stubs.tc: implement the basic semantic analysis and code generation logic for function invocation. * cscc/c/c_invoke.tc, cscc/c/c_stmt.tc, cscc/c/c_types.c: invocation support for static C# methods. * image/pecoff_writer.c: add extra padding at the beginning of a PE/COFF image to make room for 4 or more sections. 2002-08-10 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/c/c_const.tc, cscc/c/c_types.c: code generation for string constants. * cscc/c/c_grammar.y, cscc/c/c_lvalue.tc, cscc/c/c_stmt.tc, cscc/c/c_stubs.tc: code generation for global variables. * cscc/c_main.c, cscc/c/Makefile.am, cscc/c/c_crt0.c, cscc/c/c_declspec.c, cscc/c/c_internal.c, cscc/c/c_internal.h, cscc/c/c_lexutils.c, cscc/c/c_oper.tc, cscc/c/c_types.c, cscc/c/c_typesize.c, cscc/c/c_typesize.h: remove "gen_32bit_only" and replace it with a smarter type size detection system. * csupport/Markers.cs, ilalink/link_create.c, ilalink/link_image.c, ilalink/link_main.c, ilalink/link_module.c, ilalink/linker.h, include/il_linker.h: recognise memory model alignment flags in the linker. * cscc/c/c_typesize.h, cscc/c/c_typesize.c: fine-tune the type size flags a little bit. * cscc/c/c_function.c, cscc/c/c_oper.tc: minor bug fixes in the handling of "setjmp" and "va_arg". * doc/c_users_guide.html, doc/c_language_abi.html: check in some documentation for using the C compiler and the technical details of the ABI. 2002-08-09 Rhys Weatherley <rweather@southern-storm.com.au> * samples/I18N.CJK.dll, samples/I18N.MidEast.dll, samples/I18N.Other.dll, samples/I18N.Rare.dll, samples/I18N.West.dll, samples/I18N.dll: update the I18N assemblies from the latest version of pnetlib. * cscc/c/c_oper.tc: implement pointer arithmetic for "+" and "-". * engine/lib_string.c: reset "finalLen" before performing the replace phase in "String.Replace", by <nick@chemlab.org>. * codegen/cg_arith.tc, cscc/c/c_function.c, cscc/c/c_grammar.y, cscc/c/c_oper.tc: implement assignment expressions in the C compiler. * codegen/cg_assign.tc, codegen/cg_nodes.tc, codegen/jv_assign.tc, cscc/c/c_library.c, cscc/c/c_oper.tc, cscc/c/c_stubs.tc, cscc/csharp/cs_oper.tc: implement increment and decrement operators. * cscc/c/c_defs.tc, cscc/c/c_internal.c, cscc/c/c_oper.tc: implement relational operators. 2002-08-08 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/cscc.c: implement "ProcessWithAssembler" in the compiler front-end. * ilalink/link_class.c: don't bail out with an error on the "<Module>" class when linking two or more object files. * cscc/c/c_builtin.tc, csupport/Makefile.am, csupport/NativeFloat.il: unpack "native float" values from variable-argument lists using the "OpenSystem.C.NativeFloat" value type. * csupport/Markers.cs: define the "StrongAliasFor" attribute class. * image/marshal.c, image/meta_types.c, include/il_types.h: detect PInvoke'd delegates correctly even if a supertype like "Delegate" or "MulticastDelegate" is supplied as the parameter. * cscc/c/c_grammar.y: handle trailing commas in "enum" definitions. 2002-08-07 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/csharp/cs_misc.tc: implement array initializers in "new" expressions. * cscc/c/c_declspec.c: (CDeclSpecFinalize): report some errors later in the process so we can catch errors that result from choosing a default "int" type. * cscc/c/c_types.c (AppendThree): add one to the size of the string to be allocated, to account for the '\0'. * cscc/c/c_declspec.c, cscc/c/c_grammar.y, cscc/c/c_library.c, cscc/c/c_types.c, image/meta_types.c: fix bugs in type declarators. * cscc/c/c_defs.tc, cscc/c/c_internal.c, cscc/c/c_internal.h, cscc/c/c_lvalue.tc, cscc/c/c_oper.tc, cscc/c/c_stubs.tc, cscc/c/c_types.c, cscc/c/c_types.h: implement node routines for array operators; add a "GenAddress" node routine for doing efficient computations of effective addresses at runtime. 2002-08-06 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/c/c_defs.tc, cscc/c/c_grammar.y, cscc/c/c_invoke.tc, cscc/c/c_scanner.l, cscc/c/c_types.c, cscc/c/c_types.h: add some extension syntax to the grammar to allow C# types to be used as type specifiers, and to allow static methods in C# classes to be invoked. * cscc/c/c_grammar.y: flush initializers after a function, not before, so that they include any initializers that were created during the function's body. * cscc/c/c_lexutils.c (CLexLineDirective): update the correct filename and line number variables when a "#" directive is seen. * cscc/c/c_declspec.c: fix bugs in the type specifier logic for the basic numeric types. * image/meta_build.c (Load_MemberRef): store the correct signature in a member reference. * samples/mscorlib.dll: new version with Gopal V's string split fix. 2002-08-05 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/c/c_declspec.c, cscc/c/c_declspec.h, cscc/c/c_grammar.y, cscc/c/c_types.c, cscc/c/c_types.h, csupport/Markers.cs: clean up the creation and management of array types. * cscc/c/c_grammar.y, cscc/c/c_scanner.l, cscc/c/c_scope.c, cscc/c/c_types.c, cscc/c/c_types.h: add back some limited support for native structs and unions, for use with PInvoke. * cscc/c/c_declspec.c, cscc/c/c_declspec.h, cscc/c/c_grammar.y, cscc/c/c_scanner.l, cscc/c/c_types.c: use a cleaner syntax for native integer types. * cscc/c/Makefile.am, cscc/c/c_builtin.tc, cscc/c/c_defs.tc, cscc/c/c_function.c, cscc/c/c_grammar.y, cscc/c/c_scanner.l: implement builtin operators for variable-argument lists, setjmp, alloca, and embedded assembly statements. * cscc/c/c_defs.tc, cscc/c/c_function.c, cscc/c/c_grammar.y, cscc/c/c_types.c: implement struct/union field declarations and abstract declarators for function pointer types. * cscc/c/c_defs.tc, cscc/c/c_grammar.y, cscc/c/c_invoke.tc, cscc/c/c_lvalue.tc, cscc/c/c_oper.tc, cscc/c/c_scope.c, cscc/c/c_scope.h: begin implementing node creation and semantic analysis for identifiers. * codegen/cg_decls.tc, codegen/cg_gen.h, cscc/c/c_defs.tc, cscc/c/c_function.c, cscc/c/c_function.h, cscc/c/c_grammar.y, cscc/c/c_lvalue.tc, cscc/c/c_scope.c, cscc/c/c_scope.h: add enough support code to get basic local variable declarations working. * cscc/c/c_function.c: mark local variable types for output. 2002-08-04 Rhys Weatherley <rweather@southern-storm.com.au> * codegen/cg_gen.c, codegen/cg_misc.tc, cscc/c/Makefile.am, cscc/c/c_coerce.c, cscc/c/c_grammar.y, cscc/c/c_internal.c, cscc/c/c_internal.h, cscc/c/c_oper.tc, cscc/c/c_stmt.tc, cscc/c/c_types.c, cscc/c/c_types.h: implement C type coercions and simple binary operators. * cscc/c/c_declspec.c, cscc/c/c_declspec.h, cscc/c/c_function.c, cscc/c/c_grammar.y, cscc/c/c_library.c, cscc/c/c_scanner.l, cscc/c/c_scope.c, cscc/c/c_types.c, cscc/c/c_types.h, csupport/Markers.cs: remove native pointers, structs, and unions from the C compiler, as it makes the system too complex. 2002-08-03 Rhys Weatherley <rweather@southern-storm.com.au> * Makefile.am, configure.in, cscc/c/c_crt0.c, cscc/c/c_function.c, cscc/c/c_internal.c, cscc/c/c_library.c, cscc/c/c_types.c, csupport/.cvsignore, csupport/Crt0.cs, csupport/FileTable.cs, csupport/LongJmp.cs, csupport/Makefile.am, csupport/Markers.cs, csupport/README: check in the "OpenSystem.C" support library and modify the C compiler slightly to match the support library. * cscc/c/c_declspec.c, cscc/c/c_types.c, cscc/c/c_types.h: decay array parameter types into their pointer counterparts. * engine/verify_except.c: "rethrow" can be used even if the stack isn't empty. * engine/verify_obj.c: perform the correct stack height adjustment for the "sizeof" instruction. * codegen/cg_stmt.tc (GenReturn): don't reduce the stack height if generating code for a "return" with no value, as there is no value being popped. * cscc/csharp/cs_lvalue.tc, cscc/csharp/cs_oper.tc: set the correct error-reporting line numbers for nodes that are generated during semantic analysis, to ease debugging of the code generator. * engine/lib_reflect.c: implement the "Module.GetModuleType" internalcall. * samples/mscorlib.dll: new version with a minor fix to "System.Reflection.Module". * ilalink/Makefile.am, ilalink/link_create.c, ilalink/link_image.c, ilalink/link_library.c, ilalink/link_main.c, ilalink/link_module.c, ilalink/linker.h, include/il_linker.h: recognise C object modules at link time, and add extra support libraries to the link line if detected. * cscc/c/c_library.c, csupport/Markers.cs: add the attributes "InitializerOrderAttribute" and "FinalizerOrderAttribute". * cscc/c/c_function.c, cscc/c/c_function.h, cscc/c/c_grammar.y, cscc/c/c_stmt.tc: implement semantic analysis for some of the basic statement types. * codegen/cg_assign.tc: bug in string concatenation, when using the "+=" operator. 2002-08-02 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/c/c_declspec.c, cscc/c/c_declspec.h, cscc/c/c_defs.tc, cscc/c/c_grammar.y, cscc/c/c_stubs.tc, cscc/c/c_types.c: continue implementing declarators and declaration specifiers.. * codegen/cg_decls.tc, codegen/cg_gen.h, codegen/cg_stmt.tc, cscc/c_main.c, cscc/cs_main.c, cscc/csdoc.c, cscc/c/Makefile.am, cscc/c/c_crt0.c, cscc/c/c_function.c, cscc/c/c_function.h, cscc/c/c_grammar.y, cscc/c/c_internal.h, cscc/c/c_scanner.l, cscc/c/c_scope.c, cscc/c/c_scope.h, cscc/c/c_typeout.c, cscc/c/c_types.c, cscc/c/c_types.h, cscc/common/cc_main.c, cscc/common/cc_main.h: get the basic structure in place to parse and output functions - still need to implement semantic analysis for C node types. * cscc/common/cc_main.c: don't output the unsafe attributes into C object modules - leave it for the linker to do that. * cscc/c_main.c, cscc/c/c_internal.c, cscc/c/c_internal.h, cscc/c/c_scope.c, cscc/c/c_scope.h: move the code generator startup logic to "cscc/c"; tag the C object module with the "32 vs 64" memory model indication. * codegen/cg_gen.c, codegen/cg_gen.h, codegen/cg_library.c, cscc/c/Makefile.am, cscc/c/c_internal.c, cscc/c/c_internal.h, cscc/c/c_library.c: create the builtin library that is used by the C compiler for utility classes. 2002-08-01 Rhys Weatherley <rweather@southern-storm.com.au> * codegen/cg_scope.c, codegen/cg_scope.h, cscc/c_main.c, cscc/c/Makefile.am, cscc/c/c_declspec.c, cscc/c/c_declspec.h, cscc/c/c_defs.tc, cscc/c/c_grammar.y, cscc/c/c_internal.c, cscc/c/c_internal.h, cscc/c/c_oper.tc, cscc/c/c_scanner.l, cscc/c/c_scope.c, cscc/c/c_scope.h, cscc/c/c_types.c, cscc/c/c_types.h: add support for C declaration specifiers, scopes, struct headers, union headers, and enum headers. * include/il_utils.h, support/hashtab.c (ILHashIterNext): incorrect iteration logic. * cscc/c_main.c, cscc/c/Makefile.am, cscc/c/c_grammar.y, cscc/c/c_typeout.c, cscc/c/c_types.c: output required type definitions at the end of the C compile process. * cscc/c_main.c, cscc/c/Makefile.am, cscc/c/c_crt0.c, cscc/c/c_internal.c, cscc/c/c_internal.h, cscc/c/c_scope.c, cscc/c/c_scope.h: output "crt0" code if the current module has a "main" function defined. * cscc/c/c_crt0.c: improved "crt0" code. 2002-07-31 Rhys Weatherley <rweather@southern-storm.com.au> * configure.in, cscc/Makefile.am, cscc/c_main.c, cscc/c/.cvsignore, cscc/c/Makefile.am, cscc/c/c_const.tc, cscc/c/c_defs.tc, cscc/c/c_grammar.y, cscc/c/c_internal.c, cscc/c/c_internal.h, cscc/c/c_invoke.tc, cscc/c/c_lexutils.c, cscc/c/c_lexutils.h, cscc/c/c_lvalue.tc, cscc/c/c_oper.tc, cscc/c/c_rename.h, cscc/c/c_scanner.l, cscc/c/c_stmt.tc, cscc/c/c_stubs.tc, cscc/c/c_types.c, cscc/c/c_types.h: initial check-in of the C language front-end for cscc (it doesn't work yet, so don't get too excited). * cscc/c_main.c, cscc/cs_main.c, cscc/csdoc.c, cscc/common/cc_main.c, cscc/common/cc_main.h: add a new mode to "cc_main.c" that can use the C pre-processor instead of the C# pre-processor. * cscc/c_main.c, cscc/cscc.c, cscc/common/.cvsignore, cscc/common/Makefile.am, cscc/common/cc_main.c, cscc/common/cc_options.c, cscc/common/cc_options.h, cscc/common/cpp_defs.sh: fix bugs in the C pre-processor interface, and make sure that all host-specific cpp macros are turned off. 2002-07-30 Rhys Weatherley <rweather@southern-storm.com.au> * image/writer.c (SortClasses): process types in order, even if they are nested. * image/meta_writer.c (Format_TypeDef): ignore fields and methods that have MemberRef tokens, as they aren't important to determine the first field and method token in the type. * codegen/cg_decls.tc: fully qualify method references for properties and events, to prevent the assembler defaulting to the global module type for unqualified references. * cscc/csharp/cs_grammar.y: don't use the class attributes on the default constructor for the class. 2002-07-29 Rhys Weatherley <rweather@southern-storm.com.au> * ilalink/link_create.c, ilalink/link_field.c, ilalink/link_image.c, ilalink/linker.h, image/image.c, image/image.h, image/pecoff_loader.c, include/il_image.h: implement linker functionality for ".sdata" and ".tls" sections. * ilalink/link_class.c, ilasm/ilasm_build.c, image/class.c, image/writer.c, include/il_program.h: sort the field, method, and parameter tables at the end of the assemble/link instead of after each top-level class. This allows us to mix global fields and methods with ordinary classes more easily. * ilasm/ilasm_build.c, ilasm/ilasm_build.h, ilasm/ilasm_grammar.y: allow global fields and methods to be mixed with ordinary classes; use the global module class as the default when the class is not specified in a field or method reference. * ildasm/ildasm_class.c: print pseudo class headers and footers for the "<Module>" type if it is not empty. * ilasm/ilasm_grammar.y: change the "<Module>" type to "public" if it contains public fields or methods. * ilasm/ilasm_build.c, ilasm/ilasm_build.h, ilasm/ilasm_output.c, image/class.c, include/il_program.h: move dangling global references to the "<ModuleExtern>" typeref at the end of the assembling process. 2002-07-26 Rhys Weatherley <rweather@southern-storm.com.au> * codegen/cg_stmt.tc, cscc/csharp/cs_attrs.c: begin to put the structure in place to support semantic analysis of attribute values (disabled at present). 2002-07-25 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/csharp/cs_stmt.tc (ILNode_Foreach): stack clobbering bug in the definition of "args": the array size should be 1, not 0. * NEWS, configure.in: update version for the "0.4.2" release. * configure.in: update working version to "0.4.3". * image/lib_attrs.c (DllImportAttribute): set the "pinvokeimpl" flag when a "DllImport" attribute is processed. * codegen/cg_nodes.tc, cscc/csharp/cs_attrs.c, cscc/csharp/cs_gather.c: process attribute target specifications. 2002-07-25 Andrew Mitchell <ajmitch@dunedin.lug.net.nz> * debian/*: Update Deabin packaging scripte to reflect that the pnet package was split. 2002-07-25 Rhys Weatherley <rweather@southern-storm.com.au> * ilalink/link_type.c (_ILLinkerConvertType): clear the "next__" field in new method signatures before converting the parmaters, to prevent the new signature picking up a pointer to the old type. 2002-07-24 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/csharp/cs_lvalue.tc (FieldToConstant): jump to the class instead of the field if we are processing an enumerated type, so that default fields are given values in the correct order. 2002-07-23 Rhys Weatherley <rweather@southern-storm.com.au> * csunit/TestMain.cs: derive the type name from the name of the test assembly; write usage messages to stdout instead of stderr. * csunit/README: update the CSUnit README file to contain more information on writing test cases. * csant/csant_cscc.c: add the "sanewarnings" flag to compile tags to turn off annoying warnings that don't mean anything. 2002-07-22 Rhys Weatherley <rweather@southern-storm.com.au> * engine/lib_thread.c: implement the "Thread.InternalSleep" internalcall. * csant/csant.c, csant/csant_build.c, csant/csant_cscc.c, csant/csant_defs.h, csant/csant_task.c: add the "csdoc" task type for csant, to process program documentation. * csant/csant.c, csant/csant_build.c, csant/csant_cscc.c, csant/csant_defs.h, csant/csant_fileset.c, csant/csant_fileset.h, csant/csant_parse.c, csant/csant_task.c: use separate base directories for source and build locations, to support "out of tree" builds when csant is combined with automake/autoconf. * csant/csant_parse.c: implement property substitution in csant task parameters. * csant/csant_fileset.c (CSAntFileSetLoad): off by 1 bug when checking the "excludes" list. * csant/csant_fileset.c (CSAntFileSetLoad): add the "basedir" attribute to the "file" tag to override the source or build directory that is used by default. * image/debug_reader.c (ILDebugIterInit): update "left" and "right" when searching for the extents of a debug information range. * Makefile.am, configure.in, csunit/*: copy the "csunit" program from pnetlib to pnet, so that we can use it for testing other applications and libraries besides pnetlib. 2002-07-20 Rhys Weatherley <rweather@southern-storm.com.au> * codegen/cg_ainit.tc, codegen/cg_lvalue.tc, codegen/cg_utils.c: fix code generation for "ldelema", which should take a type as an argument. 2002-07-19 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/common/cc_options.c: remove "gtk-imaging-sharp" from the link line, because it is no longer part of Gtk#. * include/il_dumpasm.h, include/il_program.h: change instances of the word "namespace" into "nspace" in the headers to better integrate with modern C++ compilers. * profiles/mkprofile.sh: remove the "older than" test from the mkprofile.sh script because it was interfering with some very old versions of "test". * codegen/cg_decls.tc, cscc/csharp/cs_attrs.c: add quick and dirty support for the "DllImport" attribute. 2002-07-18 Rhys Weatherley <rweather@southern-storm.com.au> * samples/mscorlib.dll: latest version with cryptography classes. * cscc/csharp/cs_grammar.y: fix nesting level detection for delegates. 2002-07-17 Rhys Weatherley <rweather@southern-storm.com.au> * engine/int_proto.h, engine/int_table.c, engine/lib_crypt.c, samples/mscorlib.dll: implement the "NumSub" helper method for implementing RSA; check-in a new version of pnetlib. 2002-07-16 Rhys Weatherley <rweather@southern-storm.com.au> * support/bignum.c, tests/test_crypt.c: rewrite the big number division algorithm to use a simpler, and more reliable, algorithm. * include/il_bignum.h, support/bignum.c, tests/test_crypt.c: test cases and bug fixes for "ILBigNumInv". * support/bignum.c, tests/test_crypt.c: regression tests and bug fixes for "ILBigNumPow". 2002-07-15 Rhys Weatherley <rweather@southern-storm.com.au> * support/des.c: fix bugs in the structure of Triple-DES. * tests/test_crypt.c: regression tests for Triple-DES. * support/bignum.c, tests/test_crypt.c: big number regression tests and bug fixes. 2002-07-14 Gopal.V <gopalv82@symonds.net> * csdoc/doc_html.c, csdoc/doc_texi.c : fix the table bug in csdoc2html and csdoc2texi 2002-07-14 Rhys Weatherley <rweather@southern-storm.com.au> * engine/int_proto.h, engine/int_table.c, engine/lib_string.c: replace the "String.EqualRange" internalcall with the new "String.FindInRange" interncall. Based on a suggestion by Gopal V. * samples/I18N.CJK.dll, samples/I18N.MidEast.dll, samples/I18N.Other.dll, samples/I18N.Rare.dll, samples/I18N.West.dll, samples/I18N.dll, samples/System.Xml.dll, samples/System.dll, samples/mscorlib.dll: update all assemblies from the latest version of pnetlib. * engine/lib_crypt.c, include/Makefile.am, include/il_bignum.h, support/Makefile.am, support/bignum.c: add big number arithmetic routines to the support and engine code. * cscc/cscc.c (ProcessWithPlugin): handle the -E option properly. * tests/test_crypt.c, tests/Makefile.am: add regression tests for the cryptographic algorithms. 2002-07-13 Rhys Weatherley <rweather@southern-storm.com.au> * engine/lib_crypt.c, include/il_crypt.h, support/Makefile.am, support/des.c: implement the DES and Triple-DES symmetric encryption algorithms. 2002-07-12 Rhys Weatherley <rweather@southern-storm.com.au> * engine/lib_crypt.c, include/il_crypt.h, support/Makefile.am, support/sha256.c, support/sha384.c, support/sha512.c: implement the SHA-256, SHA-384, and SHA-512 hash algorithms. * engine/lib_crypt.c, include/il_crypt.h, support/Makefile.am, support/aes.c, support/rc2.c: implement the AES and RC2 symmetric encryption algorithms. * engine/int_proto.h, engine/int_table.c, engine/lib_crypt.c, samples/mscorlib.dll: stub out new cryptography-related internalcalls. 2002-07-07 Rhys Weatherley <rweather@southern-storm.com.au> * image/link.c: error in the handling of module names that already include a ".so" suffix. * ilalink/link_main.c: chmod the .exe file to +x at the end of the link process. 2002-07-06 Rhys Weatherley <rweather@southern-storm.com.au> * engine/Makefile.am, engine/int_proto.h, engine/int_table.c, engine/lib_crypt.c, samples/mscorlib.dll: implement internalcall's for the "CryptoMethods" class. * cscc/csharp/cs_gather.c (CreateEvent): use a slightly different test for delegate types because the "Invoke" method may not be in existence yet. * codegen/cg_decls.tc: wrong assembler directives for events. 2002-07-05 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/Makefile.am, cscc/cscc.c, ilalink/Makefile.am, ilalink/ilalink.c, ilalink/link_main.c, include/il_linker.h, samples/Makefile.am: integrate the linker directly into the "cscc" front-end so that it isn't necessary to call out to a separate program to do the link. 2002-07-04 Rhys Weatherley <rweather@southern-storm.com.au> * ilalink/Makefile.am, ilalink/ilalink.c, ilalink/link_create.c, ilalink/link_library.c, ilalink/linker.h, include/il_linker.h: normalize the linker's search path with the rest of the system. * cscc/cscc.c, cscc/common/cc_main.c: modify path searching so that it is consistent with the engine and linker with respect to system assemblies. * doc/pnettools.texi, cscc/cscc.1: document the "-gtk" and "-gnome" options. * doc/gtk-sharp.HOWTO: add some documentation for how to use Gtk# with Portable.NET. * clrwrap/Makefile.am, codegen/Makefile.am, csant/Makefile.am, cscc/Makefile.am, cscc/common/Makefile.am, cscc/csharp/Makefile.am, csdoc/Makefile.am, dumpasm/Makefile.am, engine/Makefile.am, ilalink/Makefile.am, ilasm/Makefile.am, ildasm/Makefile.am, ildb/Makefile.am, ildiff/Makefile.am, ilfind/Makefile.am, ilnative/Makefile.am, ilsize/Makefile.am, image/Makefile.am, resgen/Makefile.am, samples/Makefile.am, support/Makefile.am, tests/Makefile.am: out of tree builds (Stephen Compall). * codegen/cg_cast.tc, codegen/cg_const.tc, codegen/cg_nodes.tc, codegen/jv_const.tc, cscc/csharp/cs_const.tc: implement code generation and constant evaluation for casting pointer values. * Makefile.am, configure.in, doc/pnettools.texi, ildd/.cvsignore, ildd/Makefile.am, ildd/ildd.1, ildd/ildd.c: add the "ildd" program to the stack, which prints assembly and PInvoke dependencies. * README: change the reference to "gunzip" to "zcat". 2002-07-02 Gopal.V <gopalv82@symonds.net> * doc/Doxyfile: Add Doxygen configuration file (contributed by C H Gowri Kumar (gkumar@csa.iisc.ernet.in) 2002-07-02 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/common/cc_options.c: add the "-gtk" and "-gnome" options to the compiler, to make it easier for programmers to add the necessary libraries to the command-line. 2002-07-01 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/csharp/cs_invoke.tc, engine/engine.h, engine/lib_delegate.c, engine/verify_call.c, image/meta_types.c, include/il_types.h: implement semantic analysis for delegate creation expressions in the C# compiler. * cscc/common/cc_main.c (InitCodeGen): add the -L link path to the image context so that assembly references can be resolved. * codegen/cg_arith.tc, codegen/cg_assign.tc, codegen/cg_nodes.tc, codegen/jv_arith.tc, codegen/jv_assign.tc, cscc/csharp/cs_oper.tc: delegate combination and removal operators; implement the missing "+=" operator for strings. * codegen/cg_library.c, codegen/cg_resolve.c: add builtin operators for "Delegate" and "MulticastDelegate"; fix operator matching rules in "ResolveMethod". * cscc/csharp/cs_gather.c, cscc/csharp/cs_grammar.y: implement type gathering for events. * codegen/cg_decls.tc, codegen/cg_nodes.tc, cscc/csharp/cs_decls.tc, cscc/csharp/cs_gather.c: semantic analysis and code generation for events. * codegen/cg_decls.tc, cscc/csharp/cs_gather.c: bug fixes to previous check-in. * cscc/csharp/cs_lookup.c: if we find a field and an event with the same name, then favour the field. * cscc/csharp/cs_gather.c: improve duplicate detection for events. * codegen/cg_nodes.tc, codegen/cg_stmt.tc, codegen/jv_stmt.tc, cscc/csharp/cs_lvalue.tc, cscc/csharp/cs_oper.tc, cscc/csharp/cs_stmt.tc: implement code generation and semantic analysis for the "+=" and "-=" operators on events. * ilasm/ilasm_build.c: allow assembly references to be specified implicitly, to make it easier to handle transistive inclusions. * ilalink/link_library.c (ILLinkerResolveLibrary): bug in the handling of assembly names that contain '.' but don't end in ".dll". * engine/lib_object.c, image/meta_build.c, image/meta_index.c, image/test_macros.c, support/file.c, support/socket.c, tests/test_thread.c: eliminate compiler warnings on IA-64 that were due to mismatches between the size of "int" and "void *". 2002-06-30 Rhys Weatherley <rweather@southern-storm.com.au> * libffi/configure, libffi/configure.in: add host detection for GNU/Hurd (thanks to Andrew Mitchell). * image/link.c, include/il_image.h, samples/Makefile.am, samples/pnetlib.here: re-write assembly path resolution so that it can "see past" system assemblies from other CLR's that may be on the path prior to the pnetlib assemblies; use the same path for PInvoke modules. * cscc/common/cc_main.c: integrate the full system search path into the compiler and csdoc. * samples/System.dll: updated version with more System.ComponentModel classes. * engine/cvm_conv.c: insert extra casts for "I2P_LOWER". 2002-06-29 Rhys Weatherley <rweather@southern-storm.com.au> * samples/mscorlib.dll: new version with delegate comparison fix. * engine/verify_ptr.c (IL_OP_LDOBJ): fix verification of "ldobj" instructions that involve primitive types like IntPtr and UIntPtr. * image/link.c: search a default module path if LD_LIBRARY_PATH is not defined. * engine/internal.c: don't include the "Marshal" class if PInvoke has been disabled. * engine/cvmc_ptr.c, engine/cvmc_setup.c: mis-spelled identifiers in 64-bit version of the CVM coder. * samples/mscorlib.dll: new version with range check fixes to String. 2002-06-28 Rhys Weatherley <rweather@southern-storm.com.au> * engine/cvm.h, engine/cvm_conv.c, engine/cvm_dasm.c, engine/cvm_lengths.c, engine/cvmc_setup.c, image/marshal.c, include/il_meta.h: marshal "ref String[]" parameters correctly. * engine/Makefile.am, engine/int_proto.h, engine/int_table.c, engine/lib_marshal.c, samples/mscorlib.dll: implement internalcall methods for the "Marshal" class. * samples/I18N.CJK.dll, samples/I18N.MidEast.dll, samples/I18N.Other.dll, samples/I18N.Rare.dll, samples/I18N.West.dll, samples/I18N.dll, samples/System.Xml.dll, samples/System.dll, samples/mscorlib.dll: update all assemblies from pnetlib. * image/link.c, support/dynlink.c: prepend "lib" to the name of a shared object if the supplied name was not found. 2002-06-27 Rhys Weatherley <rweather@southern-storm.com.au> * NEWS, configure.in: update version for the "0.4.0" release. * configure.in: update working version to "0.4.1". 2002-06-26 Rhys Weatherley <rweather@southern-storm.com.au> * ildb/ildb_context.c, ildb/ildb_context.h, ildb/ildb_list.c, ildb/ildb_run.c, ildb/ildb_show.c, ildb/ildb_source.c, ildb/ildb_source.h: implement "list ,main", "info line", and "info source", to assist with integration with xxgdb. * image/item.c (_ILProgramItemLink): never link a program item to itself. * engine/verify.c, image/opdef.c: the IL "break" instruction is verifiable, but is otherwise ignored by the verifier/coder. * tests/Makefile.am, tests/test_verify.c, tests/test_verify.h, tests/test_vmisc.c: adjust the verification test for "break" to match the engine; add tests for "arglist", "cpblk", and "initblk". 2002-06-26 Gopal.V <gopalv82@symonds.net> * ilnative/ilcheck.c : repurpose it for checking for PInvoke calls and their images in the DSO files. 2002-06-25 Rhys Weatherley <rweather@southern-storm.com.au> * ildb/ildb_display.c, ildb/ildb_utils.h: debugger support for printing the contents of memory values. * ildb/Makefile.am, ildb/ildb_cmd.h, ildb/ildb_context.c, ildb/ildb_context.h, ildb/ildb_input.c, ildb/ildb_input.h, ildb/ildb_main.c, ildb/ildb_run.c, ildb/ildb_utils.c, ildb/ildb_utils.h: add support to the debugger to load and run applications (breakpoints are not yet supported though). * ildb/ildb_run.c: modify the output of the "run" command so that xxgdb can properly detect program start and termination. * ildb/Makefile.am, ildb/ildb_context.c, ildb/ildb_context.h, ildb/ildb_run.c, ildb/ildb_search.c, ildb/ildb_search.h, ildb/ildb_source.c, ildb/ildb_source.h: add debugger support for creating pseudo source files for programs that weren't compiled with -g. 2002-06-24 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/csharp/cs_lookup.c (CSResolveMemberName): special hack for enumerated types that have the same name as instance properties. * image/image.h, image/meta_writer.c, image/pecoff_writer.c, image/writer.c: fix the back-patching of field RVA's. * engine/unroll_x86.c, engine/unroll_x86_ptr.c, engine/unroll_x86_var.c: fix usage of x86_mov_membase_reg and x86_mov_memindex_reg when byte destinations are involved. * engine/cvm.c, engine/cvm.h, engine/cvm_dasm.c, engine/cvm_format.h, engine/cvm_lengths.c, engine/cvmc.c, engine/cvmc_call.c, engine/cvmc_gen.h, engine/cvmc_setup.c, engine/engine.h, engine/lib_diag.c, engine/null_coder.c, engine/process.c, include/il_coder.h, include/il_engine.h: add hooks into the runtime engine to support future debugging operations by ildb. 2002-06-23 Rhys Weatherley <rweather@southern-storm.com.au> * codegen/Makefile.am, codegen/cg_gen.c, codegen/cg_gen.h, codegen/cg_nodemap.c, codegen/cg_nodemap.h: introduce an associative map that allows nodes to be associated with program items, to easily map from one to the other. * cscc/csharp/cs_gather.c: associate nodes with program items during the type gathering process. * codegen/cg_nodemap.c, codegen/cg_nodes.tc, cscc/csharp/cs_decls.tc, cscc/csharp/cs_gather.c, cscc/csharp/cs_lvalue.tc, cscc/csharp/cs_semantics.tc: protect declaration nodes from double-evaluation during semantic analysis; handle forward definitions of constants. * cscc/csharp/cs_attrs.c, cscc/csharp/cs_decls.tc, cscc/csharp/cs_internal.h: add some of the scaffolding that is necessary to process attributes for classes, methods, and properties. * engine/lib_string.c, engine/pinvoke.c: perform marshalling conversions when a delegate closure is called by native code. * engine/cvm_conv.c: convert delegates into function closures when calling PInvoke methods. 2002-06-21 Rhys Weatherley <rweather@southern-storm.com.au> * engine/call.c, engine/cvm_call.c, engine/engine.h, engine/lib_defs.h, engine/lib_delegate.c, engine/pinvoke.c, samples/mscorlib.dll: continue implementation of delegates; rearrange the method call support code to improve code sharing. * engine/verify.c, engine/verify_call.c, engine/verify_obj.c: verify delegate construction. * engine/internal.c (_ILFindInternalCall): if the namespace is not present, then we still want to process arrays and delegates. * codegen/cg_misc.tc, codegen/cg_nodes.tc, codegen/cg_output.c, codegen/cg_output.h, codegen/jv_misc.tc, cscc/csharp/cs_invoke.tc: code generation for delegate creation. * engine/lib_defs.h, engine/lib_delegate.c, engine/pinvoke.c: invocation support for multicast delegates. 2002-06-20 Rhys Weatherley <rweather@southern-storm.com.au> * engine/Makefile.am, engine/delegate.c, engine/engine.h, engine/lib_defs.h, engine/lib_misc.c, engine/pinvoke.c, samples/mscorlib.dll: begin implementing delegate support. * engine/Makefile.am, engine/delegate.c, engine/engine.h, engine/internal.c, engine/lib_delegate.c: implement the internalcall support code for delegates; rename "delegate.c" as "lib_delegate.c" for consistency with other library classes. 2002-06-19 Rhys Weatherley <rweather@southern-storm.com.au> * engine/engine.h, engine/heap.c, engine/int_proto.h, engine/int_table.c, engine/internal.c, engine/lib_gc.c, include/il_gc.h, samples/mscorlib.dll, support/def_gc.c, support/hb_gc.c: implement internalcall methods for "System.GC". * engine/engine.h, engine/int_proto.h, engine/int_table.c, engine/lib_gc.c, engine/process.c, include/il_gc.h, samples/mscorlib.dll, support/def_gc.c, support/hb_gc.c: implement GC handles and weak references. * engine/process.c (ILExecProcessDestroy): bug fix for SEGV in previous check-in. * engine/lib_thread.c: implement internalcall methods for "WaitHandle" and "Mutex". * engine/int_proto.h, engine/int_table.c, engine/lib_enum.c, samples/mscorlib.dll: rationalise parameter naming for "Enum.GetEnumValueFromName". * engine/lib_misc.c: implement "ClrMakeTypedReference" internalcall. * engine/int_proto.h, engine/int_table.c, engine/lib_misc.c, samples/mscorlib.dll: implement "ClrSetTypedReference" internalcall. 2002-06-18 Rhys Weatherley <rweather@southern-storm.com.au> * engine/convert.c, engine/cvm_arith.c, engine/cvm_var.c, engine/lib_misc.c, engine/lib_type.c, samples/mscorlib.dll: change "NotSupportedException" into "NotImplementedException", to be ECMA-compatible. * csdoc/doc_html.c, csdoc/doc_load.c, csdoc/doc_tree.h: report the library that a type or member resides in. * engine/internal.c, engine/lib_object.c, engine/lib_type.c, profiles/README, profiles/compact, profiles/compact-fp, profiles/full, profiles/kernel, profiles/kernel-fp, profiles/tiny: profile support for disabling the "runtime infrastructure" parts of the system library. * csant/csant.c, csant/csant_cscc.c, csant/csant_defs.h, csant/csant_parse.c: add the "-p" command-line option to csant, to support definition profiles. 2002-06-17 Rhys Weatherley <rweather@southern-storm.com.au> * engine/cvm_conv.c, engine/lib_string.c, include/il_engine.h: fix remaining ANSI vs UTF-8 issues in the engine's string handling. * engine/lib_type.c: begin implementing "ClrType.GetInterface" and "ClrType.GetInterfaces". * csdoc/Makefile.am, csdoc/csdoc2hier.1, doc/pnettools.texi, csdoc/csdoc2hier.c: add the "csdoc2hier" program to the system, which dumps a tree hierarchy of the classes in an XML documentation file. * support/ansi.c: bug fixes to Latin1 ANSI routines. * engine/internal.c, engine/lib_defs.h, engine/lib_reflect.c, engine/lib_type.c, samples/mscorlib.dll: re-enable some classes that used to turned off when reflection was turned off, because they are not strictly part of the reflection library. 2002-06-16 Rhys Weatherley <rweather@southern-storm.com.au> * engine/heap.c (InitializeClass): throw "TypeInitializationException" if a class could not be initialized by the layout routines. * engine/cvm_ptr.c: use "_ILEngineAllocObject" instead of "_ILEngineAlloc" in the CVM "new" instruction, because the class may not have been laid out yet. * engine/convert.c (_ILConvertMethod): if the method's class cannot be laid out, then throw "TypeInitializationException". * engine/cvm.h, engine/cvm_dasm.c, engine/cvm_inline.c, engine/cvm_lengths.c, engine/cvmc_call.c: add the new CVM instructions "monitor_enter" and "monitor_exit". * engine/cvm.h, engine/cvm_dasm.c, engine/cvm_lengths.c, engine/cvm_stack.c, engine/cvmc_var.c: add the new CVM instruction "local_alloc" to implement IL's "localloc" instruction. * engine/verify.c (AssignCompatible): allow managed pointers to be assigned to any pointer-like destination in "unsafe" mode. * engine/verify_ptr.c: remove obsolete comment. * engine/lib_string.c (_IL_String_Equals): fix the length that is passed to ILMemCmp. * samples/I18N.CJK.dll, samples/I18N.MidEast.dll, samples/I18N.Other.dll, samples/I18N.Rare.dll, samples/I18N.West.dll, samples/I18N.dll, samples/System.Xml.dll, samples/System.dll, samples/mscorlib.dll: update all assemblies from the pnetlib source, primarily for the text resource fixes. * engine/lib_encoding.c, include/il_utils.h, support/Makefile.am, support/ansi.c, support/locale.c: move the ANSI handling routines out of "engine" and into "support". 2002-06-15 Rhys Weatherley <rweather@southern-storm.com.au> * include/Makefile.am: add mising .h files to the install. * Makefile.am, configure.in, clrwrap/.cvsignore, clrwrap/Makefile.am, clrwrap/clrwrap.1, clrwrap/clrwrap.c: add the "clrwrap" program to the system, which is designed to make it easier to launch IL programs on Unix systems. 2002-06-14 Gopal.V <gopalv82@symonds.net> * cscc/csharp/cs_stmt.tc: fix SEGFAULT during -nostdlib compile for "foreach" collection expression 2002-06-14 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/csdoc.c (DumpClassNameSP): increment "namespace" when outputting underscores to replace dots in namespace names. * cscc/csharp/cs_grammar.y: #ifdef around YYEOF because some versions of yacc don't have it. * tools/pnet_build.sh, tools/pnet_build.cfg, tools/pnet_build.README: add an automated build script to the system, to assist people who want to do regular sanity-check builds. * engine/Makefile.am, engine/lib_charinfo.c, engine/lib_dir.c, engine/lib_platform.c, engine/lib_task.c, engine/lib_time.c: split "lib_platform.c" into multiple files, one per class, which should make it easier to cut down the engine on embedded platforms. * engine/engine.h, engine/ilrun.c, engine/lib_task.c, engine/process.c, include/il_engine.h: save the command-line argument array so that it can be returned to the application via the "Platform.TaskMethods" class. * engine/lib_stdio.c: implement the remaining "StdRead" methods in the "Platform.Stdio" class. * engine/lib_helpers.c: implement the remaining methods in the "RuntimeHelpers" class. * engine/internal.c, profiles/compact, profiles/compact-fp, profiles/full, profiles/kernel, profiles/kernel-fp: add profile support to enable or disable filesystem operations in "lib_file.c" and "lib_dir.c". * engine/verify_obj.c (BoxValue): check for the correct combinations of stack value and boxing types. * engine/verify_arith.c (binaryShiftMatrix): wrong inferred type for the combination (I4, I) - should be I4, not I. 2002-06-13 Gopal.V <gopalv82@symonds.net> * codegen/cg_resolve.c, codegen/cg_resolve.h: add "ILResolveProperty" which gets a property by name from a class. * cscc/csharp/cs_stmt.tc , codegen/cg_stmt.tc , codegen/cg_nodes.tc, codegen/jv_stmt.tc, codegen/jv_nodes.tc: implement semantic analysis and code-generation for "foreach" Collection expressions. 2002-06-13 Rhys Weatherley <rweather@southern-storm.com.au> * support/gen_errno.sh: copy the "#include <errno.h>" line into a temporary file, to work around C compilers that do not accept "-" as a source file for pre-processing. * configure.in, include/il_config.h.in: detect the "nsl" and "socket" libraries for platforms that require them (e.g. Solaris). * ilasm/ilasm_build.c (ILAsmBuildNewClass): set the default parent to "System.Object" if unspecified. 2002-06-12 Rhys Weatherley <rweather@southern-storm.com.au> * support/gen_errno.sh: work-around versions of grep that lack the -q option (e.g. Solaris grep). * Makefile.am, acconfig.h, configure.in, ildb/Makefile.am, ilnative/Makefile.am, include/il_config.h.in, support/Makefile.am, support/def_gc.c, support/hb_gc.c, support/pt_defs.c, support/pt_defs.h, support/thr_choose.h, tests/Makefile.am: add the "--without-libgc" option to "configure", to allow building the system without a full garbage collector. * engine/process.c: don't call "ILDynLibraryClose" if PInvoke is disabled, as it will never be required. * doc/embedded.html: document how the runtime engine can be stripped down to run in embedded environments. * engine/verify_call.c, engine/verify_except.c, engine/verify_obj.c, engine/verify_ptr.c, engine/verify_stack.c: implement the "ThrowSystem" function, which builds and throws exceptions for certain kinds of verification failure. * engine/cvm_except.c: do not fetch the stack trace if reflection or debug line information has been disabled. * engine/verify.c: do not call "ILDebugPresent" if debug line information has been disabled. * engine/convert.c: avoid calling back into the class library for exceptions that are thrown by "_ILConvertMethod". * engine/lookup.c (LookupClass): detect classes within the "System" namespace correctly. * samples/mscorlib.dll: new version of the class library, which is hardened against runtime engines that are missing reflection. * ilasm/ilasm_output.c (ILAsmOutFinalizeMethod): apply fixups to class references in exception blocks. * engine/lib_helpers.c: bug fix - #endif in the wrong place. * engine/verify.c, image/Makefile.am, image/opcodes.c, image/opcodes_small.c, image/opdef.c, include/il_opcodes.h: create a "small" set of opcode tables for use when the opcode name is not required and memory is tight; modify the verifier to use the small opcode table. * engine/cvm_doc.txt: describe the "dformat" tag. * engine/ilrun.c, engine/process.c, include/il_engine.h, support/allocate.c, support/filemap.c, support/mem_debug.h: add some debug code that allows "ILMalloc" usage to be tracked. 2002-06-11 Rhys Weatherley <rweather@southern-storm.com.au> * include/il_engine.h, engine/thread.c: add "ILExecThreadCurrent", which gets the current "ILExecThread *" object from within the context of a PInvoke'd method. * engine/heap.c, support/hb_gc.c: enable finalizers in single-threaded environments (multi-threaded finalization is TBD). * libffi/ChangeLog, libffi/src/powerpc/ffi_darwin.c, libffi/src/s390/sysv.S, libffi/src/x86/ffi.c: update libffi sources from the gcc CVS repository. * libffi/src/sparc/v8.S: fix pre-processor problems on Sparc. * engine/cvm.c, engine/cvm_arith.c, engine/cvm_call.c, engine/cvm_compare.c, engine/cvm_const.c, engine/cvm_conv.c, engine/cvm_ptr.c, engine/cvm_var.c, engine/cvmc.c, engine/lib_helpers.c, engine/lib_misc.c: disable floating-point CVM instructions and internalcalls if disabled by the profile. * image/member.c: #ifdef out Java support if disabled by the profile. * image/ser_parse.c: #ifdef out parsing of float/double attribute values if disabled by the profile. * engine/int_proto.h, engine/int_table.c, engine/internal.c, engine/lib_platform.c, ilnative/ilinternal.c: disable the "Math", "Single", "Double", and "Decimal" classes if specified by the profile; stub out new "DirMethods" internalcalls. * engine/cvm_call.c, engine/cvmc_call.c, engine/cvmc_setup.c, engine/internal.c, engine/lib_diag.c, engine/lib_misc.c, engine/lib_type.c, engine/verify.c, engine/verify_call.c: #ifdef out vararg, networking, and reflection support if requested by the profile. * engine/call.c, engine/convert.c, engine/cvm.c, engine/cvm_call.c, engine/verify.c: arrange to throw "NotSupportedException" if an internalcall method is not present, and "MissingMethodException" if a PInvoke method is not present. * engine/internal.c, profiles/compact, profiles/compact-fp, profiles/full, profiles/kernel, profiles/kernel-fp: #ifdef out debug line support if specified by the profile. 2002-06-10 Rhys Weatherley <rweather@southern-storm.com.au> * include/il_config_win.h, include/il_values.h: remove the out of date file "il_config_win.h". * support/allocate.c (PageInit): probe "/dev/zero" to see if it is really capable of allocating page-based memory. * samples/I18N.CJK.dll, samples/I18N.MidEast.dll, samples/I18N.Other.dll, samples/I18N.Rare.dll, samples/I18N.West.dll, samples/I18N.dll, samples/System.Xml.dll, samples/System.dll, samples/mscorlib.dll: update all assemblies from the latest version of pnetlib. * NEWS, configure.in: update version for the "0.3.8" release. * configure.in: update working version to "0.3.9". * configure.in, include/.cvsignore, include/Makefile.am, include/il_values.h, profiles/README, profiles/compact, profiles/compact-fp, profiles/full, profiles/kernel, profiles/kernel-fp, profiles/mkprofile.sh: add the build profile definitions and the "--with-profile" configure option. * engine/cvm_call.c, engine/cvm_config.h, engine/engine.h, engine/ilrun.c, engine/lib_encoding.c, engine/method_cache.c, engine/process.c, image/pecoff_loader.c, support/unicode.c: add the simple configuration profile #ifdef's to the code. * engine/convert.c, engine/cvm_conv.c, engine/cvmc_setup.c, engine/pinvoke.c, image/link.c, image/marshal.c: #ifdef out PInvoke support if disabled by the profile. * engine/lib_array.c, engine/lib_defs.h, engine/lib_helpers.c, engine/lib_object.c: #ifdef out support for multi-dimensional arrays if disabled by the profile. 2002-06-09 Rhys Weatherley <rweather@southern-storm.com.au> * codegen/cg_stmt.tc, codegen/jv_stmt.tc: make sure that the extra value is popped from the stack when generating "switch" statements using "if" tests rather than table lookups. * ilasm/ilasm_output.c (ILAsmOutSwitchEnd): compute the correct value for the number of switch entries. * ilasm/ilasm_output.c: compute switch label references relative to the end of the switch, instead of the position of the reference. * engine/method_cache.c (_ILCacheCreate): "limit == 0" is supposed to mean unlimited. 2002-06-08 Rhys Weatherley <rweather@southern-storm.com.au> * tests/test_thread.c: simple tests for creating wait mutexes. 2002-06-07 Rhys Weatherley <rweather@southern-storm.com.au> * include/il_thread.h, support/Makefile.am, support/thr_defs.h, support/thread.c, support/wait.c, support/wait_mutex.c, support/wakeup.c: begin implementing support for wait handles. * codegen/cg_misc.tc, codegen/cg_nodes.tc, codegen/cg_stmt.tc, cscc/csharp/cs_stmt.tc: re-implement "ILNodeEndsInReturn" as a node operation so that it is easier to maintain and can be overridden from "cscc/csharp" for non-codegen node types. * support/wait.c: implement "EnterWait" and "LeaveWait". * support/wait_mutex.c: implement the name table for named mutexes. 2002-06-04 Rhys Weatherley <rweather@southern-storm.com.au> * engine/box.c, engine/call.c, engine/convert.c, engine/cvm_call.c, engine/cvmc.c, engine/cvmc_obj.c, engine/cvmc_ptr.c, engine/engine.h, engine/heap.c, engine/layout.c, engine/lib_array.c, engine/lib_type.c, engine/lookup.c, engine/process.c, engine/thread.c, engine/verify_obj.c, include/il_engine.h: begin adding support for metadata locks to the engine. * engine/engine.h, engine/lib_thread.c, engine/process.c, engine/thread.c: associate the "self" thread handle with the main thread. 2002-06-03 Rhys Weatherley <rweather@southern-storm.com.au> * engine/cvmc_branch.c: wrong offset for switch entries. * engine/unroll_x86.c, engine/unroll_x86_arith.c, engine/unroll_x86_branch.c, engine/unroll_x86_ptr.c, engine/unroll_x86_var.c: implement code unrolling for CVM object access instructions. * engine/unroll_x86.c, engine/unroll_x86_ptr.c: unroll CVM array access instructions. * engine/cvmc.c, engine/ilrun.c, engine/method_cache.c, engine/method_cache.h, engine/null_coder.c, engine/process.c, include/il_coder.h, include/il_engine.h, include/il_gc.h, support/hb_gc.c: add the "-P" option to ilrun to dump the GC heap and method cache sizes on exit. * engine/cvm.c, engine/cvm_config.h, engine/unroll_x86.c: clean up the #ifdef's that detect code unrolling. * engine/cvm.c: document the "unroll_method" instruction. * support/allocate.c: implement true page allocation on systems with mmap support. 2002-06-02 Rhys Weatherley <rweather@southern-storm.com.au> * engine/unroll_x86.c (ReExecute): fix a bug in the stack height adjustment. 2002-06-01 Gopal.V <gopalv82@symonds.net> * engine/lib_reflect.c: Internal call for Type[] Assembly.GetTypes(), as a temporary solution until we support mutiple module assemblies. * samples/httpsrv.cs, samples/Makefile.am : A sample of a network based app, a very minimal http server. 2002-06-01 Rhys Weatherley <rweather@southern-storm.com.au> * engine/pinvoke.c (_ILMakeCifForMethod): bug in the generation of ffi types when the return type is a structure. * engine/cvm.c, engine/engine.h, engine/unroll_x86.c, engine/unroll_x86_arith.c, engine/unroll_x86_branch.c, engine/unroll_x86_conv.c, engine/unroll_x86_ptr.c: fix various x86 code generation bugs in the code unroller. * engine/unroll_x86.c, engine/unroll_x86_arith.c, engine/unroll_x86_const.c, engine/unroll_x86_conv.c, engine/unroll_x86_var.c: more bugs in code unroller, which has now been enabled. * engine/unroll_x86.c, engine/unroll_x86_arith.c: implement code unrolling for CVM division instructions. 2002-05-31 Rhys Weatherley <rweather@southern-storm.com.au> * engine/Makefile.am, engine/cvm_lengths.c, engine/unroll_x86.c, engine/unroll_x86_arith.c, engine/unroll_x86_branch.c, engine/unroll_x86_const.c, engine/unroll_x86_conv.c, engine/unroll_x86_ptr.c, engine/unroll_x86_var.c, engine/x86_codegen.h: initial check-in of x86 code unroller. * engine/cvm.c, engine/cvm.h, engine/cvm_dasm.c, engine/cvm_lengths.c, engine/cvmc.c, engine/cvmc_branch.c, engine/cvmc_setup.c, engine/engine.h, engine/null_coder.c, engine/unroll_x86.c, engine/unroll_x86_branch.c, engine/unroll_x86_conv.c, engine/verify.c, include/il_coder.h: hook the x86 code unroller into the rest of the engine, but don't enable it yet because it still has some bugs. 2002-05-27 Rhys Weatherley <rweather@southern-storm.com.au> * engine/engine.h, engine/layout.c: use the image's "secure" bit to determine if explicit class layout is permitted. * engine/cvmc_setup.c, engine/pinvoke.c: pass value types by value to PInvoke methods. * engine/cvm.h, engine/cvm_conv.c, engine/cvm_dasm.c, engine/cvmc_setup.c, image/marshal.c, include/il_meta.h, include/il_program.h: implement new marshalling types for PInvoke methods and add new CVM instructions to support them. * engine/engine.h, engine/layout.c, engine/pinvoke.c: implement marshalling of PInvoke value types that have explicit layout. * doc/pinvoke.html: rewrite "pinvoke.html" to document the current PInvoke conventions within the engine. * include/il_system.h, support/Makefile.am, support/clflush.c: add the "ILCacheFlush" support function, to enable the flushing of the CPU data/instruction caches. 2002-05-26 Rhys Weatherley <rweather@southern-storm.com.au> * codegen/cg_gen.c, codegen/cg_nodes.tc, codegen/cg_stmt.tc, codegen/jv_stmt.tc, cscc/csharp/cs_stmt.tc: add a special case to "foreach" to handle iteration over strings more efficiently. * engine/cvmc_setup.c, engine/pinvoke.c: rewrite the CVM method setup implementation so that we can use either "ffi_call" or "ffi_raw_call" to invoke native methods. * engine/cvm_call.h, engine/cvm_config.h, engine/cvmc_gen.h: move CVM_CTOR_OFFSET into "cvm_config.h" so that the interpreter can use the value directly, rather than needing to call the coder to get it during constructor calls. * engine/cvm.h: fix the definition of "CVMWord::padding". * configure.in: move AC_EXEEXT and AC_OBJEXT down to after AC_PROG_CC, because they depend upon on it on some platforms. * engine/cvm_call.c: short-cut "call_virtual" and "call_interface" when the method has already been converted. 2002-05-25 Rhys Weatherley <rweather@southern-storm.com.au> * engine/lib_array.c: add special cases for 2-dimensional arrays. * engine/cvm.h, engine/cvm_call.c, engine/cvm_conv.c, engine/cvm_dasm.c, engine/cvmc.c, engine/cvmc_arith.c, engine/engine.h: add new instructions that can support raw ffi calls. 2002-05-24 Andrew Mitchell <ajmitch@dunedin.lug.net.nz> * debian/*: add files related to Debian packaging. * debian/pnet, debian/pnet-dev: remove generated files from CVS to avoid conflicts 2002-05-24 Rhys Weatherley <rweather@southern-storm.com.au> * engine/HACKING, engine/cvm.c, engine/cvm_branch.c, engine/cvm_call.c, engine/cvm_config.h, engine/cvmc.c, engine/cvmc_setup.c: alter the way that CVM is configured, so that all configuration parameters are centralised into "cvm_config.h". * configure.in, engine/Makefile.am, engine/cvm.c, engine/cvm_call.c, engine/cvm_config.h, engine/cvm_format.h, engine/cvmc.c, engine/cvmc_gen.h, engine/mklabel.sh: turn on direct threading support in the CVM interpreter. * engine/cvm.h, engine/cvm_call.c, engine/cvm_dasm.c, engine/cvm_format.h, engine/cvmc.c, engine/cvmc_call.c, engine/cvmc_setup.c: convert the "tail" instruction into a "tail_call" instruction which combines "tail" and "call"; implement tail calls for the direct threaded interpreter. * engine/cvm_call.c, engine/cvm_format.h, engine/cvmc.c, engine/cvmc_call.c, engine/null_coder.c, engine/verify_call.c, include/il_coder.h: begin implementing support for indirect method calls. * engine/Makefile.am: add ilrun.1 to the build process. * doc/cvmdoc.py, engine/cvm.c, engine/cvm_arith.c, engine/cvm_branch.c, engine/cvm_call.c, engine/cvm_compare.c, engine/cvm_const.c, engine/cvm_conv.c, engine/cvm_except.c, engine/cvm_inline.c, engine/cvm_ptr.c, engine/cvm_stack.c, engine/cvm_var.c: document the direct format of each instruction. 2002-05-23 Rhys Weatherley <rweather@southern-storm.com.au> * support/locale.c: #ifdef for CODESET because it isn't defined on NetBSD, although nl_langinfo is. * engine/cvmc_branch.c: code generation problem with branches and comparisons that involve pointers. * engine/cvm.c, engine/cvm_arith.c, engine/cvm_branch.c, engine/cvm_call.c, engine/cvm_compare.c, engine/cvm_const.c, engine/cvm_conv.c, engine/cvm_except.c, engine/cvm_inline.c, engine/cvm_ptr.c, engine/cvm_stack.c, engine/cvm_var.c, engine/cvm_format.h: abstract the details of operand unpacking and instruction lengths, to make it easier to change to a direct threading interpreter in the future. * engine/verify.c: fetch the instruction information before checking jump targets, so that the correct debug information is reported if an error occurs during jump target processing. * engine/verify_branch.c (ValidateStack): handle subclass relationships properly when the stack is non-empty, including array subclass relationships. * tests/Makefile.am: turn off -O2 so that the huge test suite source files compile quicker and don't overload the compiler's optimisation engine. * engine/cvm_format.h, engine/cvmc.c, engine/cvmc_branch.c, engine/cvmc_const.c, engine/cvmc_gen.h: implement some of the code generation and instruction pattern macros that are needed to support direct threaded interpretation. 2002-05-22 Rhys Weatherley <rweather@southern-storm.com.au> * auto_gen.sh, configure.in, codegen/Makefile.am, csant/Makefile.am, cscc/Makefile.am, cscc/common/Makefile.am, cscc/csharp/Makefile.am, csdoc/Makefile.am, dumpasm/Makefile.am, engine/Makefile.am, ilalink/Makefile.am, ilasm/Makefile.am, ildasm/Makefile.am, ildb/Makefile.am, ildiff/Makefile.am, ilfind/Makefile.am, ilnative/Makefile.am, ilsize/Makefile.am, image/Makefile.am, resgen/Makefile.am, support/Makefile.am, tests/Makefile.am: automake/autoconf updates which should help make things build more smoothly on automake 1.5 systems. * engine/lib_reflect.c (CreateFileStream): strip extra '/' from the assembly pathname so that we don't get two '/'s in the name. * engine/cvmc_setup.c, engine/int_table.c, ilnative/ilinternal.c: handle the libffi expansion that occurs when native return types are 32-bits or less in size. * cscc/common/cc_errors.h: add an extra argument to the "CC_PRINTF" macro to work around problems in MacOSX's preprocessor. * cscc/common/cc_main.c (CCPluginParseError): recognise error message forms from Bison 1.29 and higher. * cscc/csharp/cs_grammar.y, ilasm/ilasm_grammar.y: add an ugly hack to work around missing "-lfl" on MacOSX. * configure.in: add the "-no-cpp-precomp" flag to CFLAGS if the compiler supports it, because we don't want "smart" preprocessing on MacOSX. 2002-05-21 Gopal.V <gopalv82@symonds.net> * cscc/csharp/cs_lvalue.tc,codegen/cg_lvalue.tc,codegen/cg_misc.tc codegen/jv_lvalue.tc , codegen/jv_misc.tc: implement semantic analysis and code generation of base references in cscc 2002-05-21 Rhys Weatherley <rweather@southern-storm.com.au> * engine/cvm.c, engine/cvm_arith.c, engine/cvm_branch.c, engine/cvm_call.c, engine/cvm_compare.c, engine/cvm_const.c, engine/cvm_conv.c, engine/cvm_except.c, engine/cvm_inline.c, engine/cvm_ptr.c, engine/cvm_stack.c, engine/cvm_var.c, engine/mklabel.sh: mark the end of each instruction case, because it may be useful in future engine optimisations. 2002-05-16 Rhys Weatherley <rweather@southern-storm.com.au> * engine/cvmc_setup.c (CVMCoder_SetupExternCtor): wrong return value if we don't have an allocating constructor. * engine/cvmc_var.c, engine/layout.c: handle "typedref" values correctly. * engine/verify_call.c (MatchSignature): pass the correct index to "ILCoderPackVarArgs" for the first vararg parameter. * engine/cvm_call.c, engine/cvmc.c, engine/cvmc_arith.c, engine/cvmc_branch.c, engine/cvmc_call.c, engine/cvmc_const.c, engine/cvmc_conv.c, engine/cvmc_except.c, engine/cvmc_gen.h, engine/cvmc_obj.c, engine/cvmc_ptr.c, engine/cvmc_setup.c, engine/cvmc_stack.c, engine/cvmc_var.c: implement a better abstraction for CVM code generation to make it easier to change the representation format in the future. * engine/cvm_call.c (PackVarArgs): box "float" and "double" values correctly during vararg method calls. 2002-05-15 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/cscc.c: "-fsave-asm" saves the assembly output even if the assembler fails. * ilalink/link_class.c, ilalink/link_create.c, ilasm/ilasm_build.c, ildasm/ildasm_class.c, image/class.c, image/meta_build.c, image/meta_types.c, image/sig_parse.c: fix the handling of vararg call sites in the linker, assembler, disassembler, and image code. * codegen/cg_gen.c, image/member.c, include/il_program.h, include/il_types.h: add the "ILMethodResolveCallSite" function and related support code. * ildasm/ildasm_java.c, ildasm/ildasm_method.c, image/opcodes.c, include/il_opcodes.h: remove the "IL_OPCODE_ARGS_UNSAFE" value, because it is not strictly accurate. * engine/cvmc.c, engine/cvmc_call.c, engine/null_coder.c, engine/verify_call.c, engine/verify_obj.c, include/il_coder.h: verification of vararg method calls. * engine/verify.c: recognise "typedref" values in "TypeToEngineType" and "AssignCompatible". * engine/cvm.h, engine/cvm_call.c, engine/cvm_dasm.c, engine/cvmc.c, engine/cvmc_call.c, engine/cvmc_obj.c, engine/cvmc_setup.c: add the "pack_varargs" CVM instruction to repack the stack when calling a vararg method. * support/test_float.c, engine/cvm_arith.c: add #ifdef's for hpux, which uses "isfinite" instead of "finite". * engine/call.c, engine/cvm.c, engine/cvm_call.c: throw "System.Security.VerificationException" when the verifier fails. * engine/cvm_dasm.c: simplify the reporting of "tail" instructions. * engine/cvm.h, engine/cvm_call.c, engine/cvm_dasm.c, engine/cvmc_call.c: collapse "call" and "call_extern" into a single "call" instruction; look for a cached method entry point in "call_ctor"; use the correct number of parameter words when collapsing the stack for tail calls. 2002-05-14 Rhys Weatherley <rweather@southern-storm.com.au> * engine/cvm_call.c, engine/cvm_except.c, engine/engine.h: change "exceptHeight" into a pointer, to reduce the overhead of exception handling slightly. * include/il_values.h: remove parentheses that were causing build breakages on MacOSX. * csdoc/Makefile.am: move "csdocvalil", "csdoc2stub", and "csdoc2test" to "noinst_PROGRAMS". * ilnative/ilinternal.c: generate marshalling stubs for use when libffi is not present on a system. * acconfig.h, configure.in, engine/Makefile.am, engine/engine.h, engine/int_table.c, ildb/Makefile.am, ilnative/Makefile.am, include/il_config.h.in: hook the marshalling stub generator into the system; add the "--without-libffi" option to configure.in. * Makefile.am: don't build libffi unless "USING_LIBFFI" is defined. * engine/convert.c, engine/cvm.c, engine/cvm_call.c, engine/engine.h, engine/internal.c, engine/layout.c, engine/lib_array.c, engine/pinvoke.c, ilnative/ilcheck.c: modify the engine to handle both libffi and non-libffi internalcall marshalling. * configure.in: directory cd error for "libgc" configuration; turn off libffi by default on hpux. * libgc/configure.host: remove "+ESdbgasm" option on hpux builds as it causes problems on hpux/gcc systems. 2002-05-13 Rhys Weatherley <rweather@southern-storm.com.au> * libffi/src/powerpc/ffi_darwin.c: rearrange declarations to declare "fd" properly. Thanks to Glenn Chambers <gchamber@bright.net>. * engine/cvm.c: turn off computed goto's when profiling instructions. * engine/cvm.h, engine/cvm_dasm.c, engine/cvm_var.c, engine/cvmc_var.c: optimise loads and stores of bool/byte variables. * engine/mklabel.sh: remove the "function" keyword, because it is not portable to all shells. * acconfig.h, configure.in, include/il_config.h.in, engine/mklabel.sh: detect PIC and non-PIC forms of computed goto's separately because older versions of gcc only support the non-PIC form. * engine/cvm.c, engine/mklabel.sh: make instruction debugging work in the presence of computed goto's. * engine/mklabel.sh: modify the awk scripts to work around versions of awk that don't support hex string to number conversion. * engine/cvm.c, engine/cvm_dasm.c, engine/cvm_ptr.c, engine/cvm_var.c, engine/ilrun.c: add variable profiling. 2002-05-12 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/csharp/cs_decls.tc, cscc/csharp/cs_lvalue.tc, cscc/csharp/cs_stmt.tc: convert '//' comments into '/*'. * engine/.cvsignore, engine/Makefile.am, engine/cvm.c, engine/cvm_arith.c, engine/cvm_branch.c, engine/cvm_call.c, engine/cvm_compare.c, engine/cvm_const.c, engine/cvm_conv.c, engine/cvm_except.c, engine/cvm_inline.c, engine/cvm_ptr.c, engine/cvm_stack.c, engine/cvm_var.c, engine/mklabel.sh: modify the CVM interpreter so that it can use computed goto's instead of "switch" on compilers that support it. * acconfig.h, configure.in, include/il_config.h.in: detect computed goto support during configuration. * engine/HACKING, engine/Makefile.am, engine/asmfix.c: remove "ilrun_opt", as "ilrun" is now at least as fast as it. 2002-05-11 Gopal.V <gopalv82@symonds.net> * cscc/csharp/cs_stmt.tc, codegen/cg_scope.c, codegen/cg_scope.h, cscc/csharp/cs_lvalue.tc: try to implementlocal "consts" 2002-05-11 Rhys Weatherley <rweather@southern-storm.com.au> * libffi/*: remove all libffi source files, prior to upgrade, and then add the new sources. * config-ml.in, config.if, libtool.m4, ltcf-c.sh, ltconfig, ltmain.sh, move-if-change: new autotools files to assist with building libffi. * Makefile.am, configure.in: configure and build libffi and libgc more carefully than we were previously. * engine/Makefile.am, engine/pinvoke.c, ildb/Makefile.am, ilnative/Makefile.am, tests/Makefile.am: modify sources and link lines where necessary to accomodate the new libffi. * Makefile.am: make sure that libffi and libgc are cleaned up correctly when "make clean" and "make distclean" are used. * NEWS, configure.in: update version for the "0.3.6" release. * configure.in: update working version to "0.3.7". * engine/cvm_call.c: short-cut the common case of "COP_CALL_EXTERN" being used to call a method that has been converted already. * engine/cvm.c, engine/cvm_call.c, engine/cvm_except.c, engine/engine.h, engine/lib_array.c, engine/thread.c: convert the "frame" variable in the thread object and call frames into a pointer because it is more efficient than a relative offset. * engine/cvm_call.c: don't reset "thread->exceptHeight" on entry to a method because it will be overwritten if it is needed anyway; add some assembly hacks to prevent gcc getting overeager when it optimises the method call code. 2002-05-10 Jonathan Springer <jspringer@verizon.net> * engine/cvm_call.c (_ILAllocCallFrame): Throw an OutOfMemoryException (pre-allocated) if new memory can not be allocated to extend the frame stack. * engine/cvm_call.c, engine/cvm_dasm.c, engine/cvmc.c, engine/cvmc_call.c, engine/null_coder.c, engine/verify_call.c, include/il_coder.h: Add support for IL 'tail. call' sequence. Note that tail. does not yes support 'calli' or 'callvirt' instructions, which is OK by ECMA-335. * engine/ilrun.c: When argument parsing throws an exception, print it out using the standard mechanisms. 2002-05-10 Rhys Weatherley <rweather@southern-storm.com.au> * ilalink/link_create.c: don't report "unresolved type reference" for synthetic types and synthetic uses of "System.Array". * codegen/cg_stmt.tc, codegen/jv_stmt.tc (ILNode_If): do not generate branch instructions at the end of a "then" clause if it ends with a "return" statement, because it will cause incorrect code generation if the "else" clause also ends with a "return". * codegen/cg_logical.tc, codegen/jv_logical.tc (ILNode_LogicalNot): reversed test in "GenValue". * cscc/csdoc.c, cscc/common/cc_main.c, cscc/common/cc_main.h: turn on doc comments when compiling C# code with "csdoc". * cscc/csdoc.c: bug fixes to XML output for interfaces and constructors. * cscc/csdoc.c: do not output "System.Object" as a base type in the C# signature, because it looks odd. 2002-05-09 Rhys Weatherley <rweather@southern-storm.com.au> * libgc/misc.c: fix a Win32-ism that is affecting builds on some Cygwin systems. * codegen/cg_library.c, codegen/cg_lvalue.tc, codegen/cg_misc.tc, codegen/cg_output.c, codegen/jv_lvalue.tc, codegen/jv_misc.tc: continue implementation of method invocation for value types. * codegen/cg_misc.tc, codegen/cg_nodes.tc, codegen/jv_misc.tc, cscc/csharp/cs_invoke.tc, cscc/csharp/cs_lvalue.tc: box managed values that are passed to ordinary class methods as "this". * engine/lib_enum.c (_IL_Enum_GetEnumName): wrong pointer used to fetch the field name. * engine/mkint.sh, engine/HACKING: add the "mkint.sh" script to the CVS repository. * cscc/cscc.1, cscc/cscc.c, doc/pnettools.texi: add the "-fsave-asm" option to the compiler to assist with debugging. 2002-05-08 Rhys Weatherley <rweather@southern-storm.com.au> * codegen/cg_gen.c, codegen/cg_misc.tc, codegen/cg_nodes.tc, codegen/cg_output.c, codegen/cg_output.h, cscc/csharp/cs_decls.tc, cscc/csharp/cs_gather.c, cscc/csharp/cs_grammar.y, cscc/csharp/cs_invoke.tc: complete the implementation of the "__arglist" keyword in the compiler. * codegen/cg_lvalue.tc (ILNode_MemberField): bug fixes to field accesses within managed values - previously the code was assuming that everything was an object reference. * codegen/cg_resolve.c: use the current class as the default call scope when resolving operators. * codegen/cg_resolve.c (ResolveMethod): off by one when checking if all arguments were coercable; continue resolving if member is inaccessible. * codegen/cg_nodes.tc, cscc/csharp/cs_grammar.y, cscc/csharp/cs_stmt.tc: implement semantic analysis for the simple array case of the "foreach" statement. * codegen/cg_misc.tc, codegen/jv_misc.tc, cscc/csharp/cs_lvalue.tc: improve method invocation handling for value types. 2002-05-07 Rhys Weatherley <rweather@southern-storm.com.au> * codegen/cg_library.c, codegen/cg_misc.tc, codegen/cg_nodes.tc, codegen/jv_misc.tc, cscc/csharp/cs_grammar.y, cscc/csharp/cs_misc.tc, cscc/csharp/cs_scanner.l: implement the "__makeref", "__reftype", and "__refvalue" operators. * doc/pnettools.texi: document the new compiler keywords. 2002-05-06 Rhys Weatherley <rweather@southern-storm.com.au> * codegen/cg_scope.c, codegen/cg_scope.h, cscc/csharp/Makefile.am, cscc/csharp/cs_attrs.c, cscc/csharp/cs_internal.h: begin adding support for attribute semantic analysis. * codegen/cg_misc.tc, codegen/cg_nodes.tc, codegen/jv_misc.tc, cscc/csharp/cs_decls.tc, cscc/csharp/cs_grammar.y, cscc/csharp/cs_internal.h, cscc/csharp/cs_invoke.tc: implement non-static field initializers. * codegen/cg_lvalue.tc, codegen/cg_nodes.tc, codegen/cg_utils.c, codegen/cg_utils.h, codegen/jv_lvalue.tc, cscc/csharp/cs_lvalue.tc: implement code generation for "ref" and "out" argument variables. * engine/engine.h, engine/int_proto.h, engine/int_table.c, engine/lib_misc.c, engine/process.c, engine/verify_obj.c, samples/mscorlib.dll: implement internalcall's for "ArgIterator" and "TypedReference.ToObject"; bug fix to verification of "arglist"; update "mscorlib.dll" with new declaration of "ArgIterator.End". * codegen/cg_gen.c, codegen/cg_gen.h, codegen/cg_library.c, codegen/cg_misc.tc, codegen/cg_nodes.tc, codegen/jv_misc.tc, cscc/csharp/cs_grammar.y, cscc/csharp/cs_invoke.tc, cscc/csharp/cs_scanner.l: begin adding support for the "__arglist" keyword in the compiler. 2002-05-05 Rhys Weatherley <rweather@southern-storm.com.au> * engine/call.c, engine/cvm_call.c, engine/engine.h, engine/ilrun.1, engine/ilrun.c, engine/process.c: adjust for pnet coding guidelines; make the -S option kbytes to be consistent with -H; document -S in the manpage. * engine/lib_diag.c (_IL_StackFrame_GetExceptionStackTrace): perform manual allocation of the stack frame array to stop the engine being recursively re-entered on StackOverflowException; limit the number of reported frames to 256. 2002-05-04 Jonathan Springer <jonathan.springer@verizon.net> * engine/call.c, engine/cvm_call.c, engine/engine.h: implement dynamic reallocations of frame stack (and add some stack overflow exceptions where they were TODOs). * engine/call.c: Use _ILSystemException to provide StackOverflowException information from CallMethod and CallMethodV. * enigine/ilrun.c, engine/process.c, include/il_engine.h: Add '--stack-size' and '-S' command-line arguments to allow override of default stack size (8K). 2002-05-05 Rhys Weatherley <rweather@southern-storm.com.au> * csdoc/doc_valil.c (AttributeToName): length-determination error that caused SEGV's when converting attributes. * codegen/cg_stmt.tc (EndsInReturn): recognise ILNode_LineInfo nodes when checking for "return" statements. * engine/cvm.c, engine/cvm_except.c, engine/engine.h, samples/except.cs: insert stack traces into exception objects that are created by the engine; expose "SystemException" as "_ILSystemException" so it can be reused elsewhere. * ildiff/.cvsignore: add .cvsignore file to ildiff directory. 2002-05-04 Rhys Weatherley <rweather@southern-storm.com.au> * cscc/csharp/cs_grammar.y (OuterDeclaration): don't call "yyerrok" if we have reached EOF, because it will cause the parser to loop indefinitely when an error is detected at the outermost level. * engine/Makefile.am, engine/int_proto.h, engine/int_table.c, engine/lib_emit.c, engine/lib_reflect.c, samples/System.dll, samples/mscorlib.dll: update pnetlib and stub the extra internalcall's that "Reflection.Emit" requires. * engine/ilverify.c: resolve assembly references when verifying an IL application. * codegen/cg_stmt.tc (EndsInReturn): recognise ILNode_ThrowExpr as a "return" statement. * cscc/csharp/cs_grammar.y: wrap blocks and for/foreach statements in "ILNode_NewScope" nodes to perform correct variable scoping. * support/socket.c: use "sizeof(struct sockaddr_in)" instead of "sizeof(struct sockaddr)". * engine/int_proto.h, engine/int_table.c, engine/lib_socket.c, support/socket.c: make the IP addresses consistently network byte order in all relevant places; implement conversions between host and network byte order. * samples/System.dll, samples/System.Xml.dll: updated assemblies. 2002-05-03 Rhys Weatherley <rweather@southern-storm.com.au> * engine/HACKING: update the section on "internalcall" methods. 2002-05-02 Rhys Weatherley <rweather@southern-storm.com.au> * image/ser_parse.c (ILSerializeReaderGetExtra): reversed the parse order of an extra field's name and type. * image/Makefile.am, image/item.c, image/lib_attrs.c, include/il_program.h, include/il_system.h, support/allocate.c: implement routines to convert C# attribute values into metadata for builtins like "MethodImpl", "DllImport", "MarshalAs", etc. 2002-05-01 Rhys Weatherley <rweather@southern-storm.com.au> * support/spawn.c: report signals from spawned child processes. * codegen/cg_optable.c: do not insert primitive type coercions into the result of an operator, as the type is already final. * image/pecoff_writer.c (ILWriterTextWrite): bug fix for blocks that are greater than 2k in size. * configure.in, engine/lib_socket.c, include/il_config.h.in, include/il_sysio.h, support/socket.c: fix bugs in the "select" implementation; make it bullet-proof against signals; pass back more information about which descriptors fired. 2002-05-01 Charlie Carnow <carnow@gmx.net> * support/socket.c, engine/lib_socket.c: Implementation of Select 2002-04-30 Rhys Weatherley <rweather@southern-storm.com.au> * codegen/cg_ainit.tc, codegen/cg_misc.tc, codegen/cg_nodes.tc, codegen/cg_output.c, codegen/cg_output.h, codegen/jv_misc.tc, cscc/csharp/cs_grammar.y, cscc/csharp/cs_misc.tc: semantic analysis and code generation for array "new" operator. * samples/codepage.cs: add command-line options to assist with dumping the contents of code pages. * samples/I18N.CJK.dll, samples/I18N.MidEast.dll, samples/I18N.Other.dll, samples/I18N.Rare.dll, samples/I18N.West.dll, samples/I18N.dll, samples/System.Xml.dll, samples/System.dll, samples/mscorlib.dll: new versions of the library assemblies. 2002-04-29 Rhys Weatherley <rweather@southern-storm.com.au> * include/il_thread.h, support/no_defs.h, support/pt_defs.c, support/pt_defs.h, support/thr_defs.h, support/thread.c, support/w32_defs.h, support/wakeup.c: implement thread joins. * include/il_thread.h, support/thr_defs.h, support/thread.c: implement thread abort handling. 2002-04-28 Rhys Weatherley <rweather@southern-storm.com.au> * engine/ilrun.c, engine/process.c, include/il_engine.h: recognise invalid program entry points and refuse to run the program if one is supplied. * support/pt_defs.c (_ILCondVarTimedWait): mismatch between microseconds and nanoseconds. * tests/test_thread.c: tests for "ILThreadSleep". 2002-04-27 Rhys Weatherley <rweather@southern-storm.com.au> * support/Makefile.am, support/mutex.c, support/no_defs.c, support/no_defs.h, support/pt_defs.c, support/pt_defs.h, support/thr_defs.h, support/thread.c, support/w32_defs.c, support/w32_defs.h: rearrange the threading code so that 90% of it is common between platforms. * support/w32_defs.h: minor macro bugs in previous check-in. * support/pt_include.h, support/pt_mutex.c, support/pt_thread.c, support/pt_wait.c, support/w32_include.h, support/w32_mutex.c, support/w32_thread.c: remove files that are no longer necessary after the rearrangement. * image/meta_types.c (ILTypeGetEnumType, ILTypeGetDelegateMethod): resolve the class before searching it for fields or methods. * samples/System.dll, samples/mscorlib.dll: updated assemblies. * include/il_thread.h, support/Makefile.am, support/no_defs.c, support/no_defs.h, support/pt_defs.c, support/pt_defs.h, support/thr_defs.h, support/thread.c, support/w32_defs.c, support/w32_defs.h, support/wakeup.c: implement condition mutexes, condition variables, thread wakeup objects, and thread sleeping. * support/w32_defs.h: missing definitions for the "_ILCondMutex" and "_ILCondVar" types. 2002-04-26 Rhys Weatherley <rweather@southern-storm.com.au> * support/pt_include.h, support/pt_mutex.c, support/pt_thread.c, support/pt_wait.c: implement "safe" thread suspends that will not suspend a thread that is currently holding a mutex or a rwlock. * support/pt_thread.c: clean up the mutexes and semaphores that are owned by a thread when it is destroyed. * tests/test_thread.c: more thread-related test cases. 2002-04-25 Rhys Weatherley <rweather@southern-storm.com.au> * support/pt_thread.c: fix problems with "resumeRequested" flag. * configure.in, include/il_config.h.in: add "usleep" to the set of functions that are autoconf'ed. * include/il_thread.h, support/README.threads, support/no_thread.c, support/pt_thread.c, support/w32_thread.c: implement some more thread primitives; unblock the pthreads cancel signal during thread suspends; describe what needs to be done to add a new thread package. * tests/.cvsignore, tests/Makefile.am, tests/test_thread.c: add the beginnings of a regression test suite for threading. * support/w32_thread.c: missing parameter to "TerminateThread". * support/pt_thread.c: set the thread object in a thread-specific variable for the main thread. * support/w32_thread.c: make sure that the body of "ILThreadInit" is only run once. * include/il_thread.h, support/no_thread.c, support/pt_thread.c, support/w32_thread.c, tests/test_thread.c: bug fixes to threading primitives. * support/w32_include.h, support/w32_mutex.c, support/w32_thread.c: fix bugs in the Win32 threading system that were exposed by the test suite; implement "safe" thread suspension that ensures that critical sections are not held by suspended Win32 threads. * tests/test_thread.c: add tests that check that a thread cannot be suspended while it holds a mutex or a read/write lock. 2002-04-24 Rhys Weatherley <rweather@southern-storm.com.au> * include/il_thread.h, support/Makefile.am, support/no_thread.c, support/pt_include.h, support/pt_mutex.c, support/pt_thread.c, support/pt_wait.c: continue implementing threading primitives. * acconfig.h, configure.in, include/il_config.h.in, libgc/misc.c, libgc/include/private/gcconfig.h, support/hb_gc.c: enable libgc's threading support for Win32/Cygwin. * support/Makefile.am, support/no_thread.c, support/pt_include.h, support/pt_mutex.c, support/pt_thread.c, support/pt_wait.c, support/thr_choose.h, support/w32_mutex.c, support/w32_thread.c: begin implementing Win32 thread routines and centralise the detection of thread packages into "thr_choose.h". * image/Makefile.am, image/meta_types.c, image/misc.c, image/misc_token.c, image/types.c, support/Makefile.am, support/alloc.c, support/allocate.c, support/convert.c, support/cvt_float.c: rename some source files that had duplicate names because it was causing breakpoint problems in gdb. 2002-04-23 Rhys Weatherley <rweather@southern-storm.com.au> * engine/HACKING: describe more of the engine architecture. * configure.in, include/Makefile.am, include/il_thread.h, support/Makefile.am, support/no_thread.c, support/pt_include.h, support/pt_thread.c: begin adding threading primitives, based on pthreads. 2002-04-22 Rhys Weatherley <rweather@southern-storm.com.au> * codegen/cg_gen.c, codegen/cg_gen.h, cscc/common/cc_main.c: never use the ".library" builtin unless the "-fbuiltin-library" command-line option is supplied; create AssemblyRef's for all libraries that are specified by "-l" options. * cscc/csharp/cs_decls.tc: add the "beforefieldinit" flag to classes that need it. * codegen/cg_gen.c, codegen/cg_gen.h, codegen/cg_output.c, cscc/common/cc_errors.c: add security attributes to the output image if unsafe constructs are used in the source program. * image/meta_build.c (Load_MemberRef): scan up the class hierarchy to resolve a member because C# compilers output the direct parent class in "base.X" expressions, even if "X" lives in an indirect ancestor. * csdoc/doc_backend.h, csdoc/doc_main.c, csdoc/doc_valil.c, csdoc/status.sh: process multiple "-fimage" options in "csdocvalil". 2002-04-21 Gopal.V <gopalv82@symonds.net> * csdoc/doc_test.c : Test stubber for ECMA classes , added csdoc2test to create stub test classes. 2002-04-21 Rhys Weatherley <rweather@southern-storm.com.au> * support/spawn.c (ILSpawnProcess): pass the first few options directly on the command-line instead of in the response file. * csant/csant_cscc.c (BuildCscCommandLine): pass "/noconfig" in addition to "/nostdlib" to csc, because "/nostdlib" only turns off mscorlib.dll, and not all standard libraries. * samples/I18N.CJK.dll, samples/I18N.MidEast.dll, samples/I18N.Other.dll, samples/I18N.Rare.dll, samples/I18N.West.dll, samples/I18N.dll, samples/Makefile.am, samples/System.Xml.dll, samples/System.dll, samples/mscorlib.dll: new versions after fixing build problems with System and System.Xml. 2002-04-20 Rhys Weatherley <rweather@southern-storm.com.au> * ChangeLog, doc/ChangeLog-2: move the contents of "ChangeLog" to "doc/ChangeLog-2", because it was starting to get too big to manage. * engine/cvm.c, engine/cvm_dasm.c: profile "wide" instructions. * engine/cvm.h, engine/cvm_dasm.c, engine/cvm_ptr.c, engine/cvmc.c, engine/cvmc_obj.c, engine/null_coder.c, engine/verify_var.c, include/il_coder.h: introduce the "pread_this" and "iread_this" instructions into CVM to optimise the common cases of accessing fields relative to "this". * engine/cvm.c, engine/cvm_call.c, engine/cvmc.c, engine/ilrun.c, engine/method_cache.c, engine/method_cache.h, image/program.h: implement method profiling in the engine to get a picture of which methods in pnetlib are highly used.